关于2019年ccf第五题317号子任务

第一次接触图论算法写出来这一题以后可以通过测试样例,但是提交以后总是提示错误,先挂着。。。不知道什么时候找出bug

(最后return前的system(“pause”) 是用来在vs里面调试用的)

希望大佬也能帮忙看下错误噢(今天刚刚申请的博客)

 1 #include
 2 #include 
 3 using namespace std;
 4 #define inf 1001
 5 int a[10000][10000];//矩阵
 6 bool kind[10000];//记录节点类型
 7 int sort_array[10000];
 8 int main()
 9 {
10     int n, m, k;
11     cin >> n >> m >> k;
12     for (int i = 0; i < n; i++)
13         cin >> kind[i];
14     for (int i = 0; i < n; i++)
15         for (int j = 0; j < n; j++)
16             if (i == j)
17                 a[i][j] = 0;
18             else
19                 a[i][j] = inf;
20 
21     //创建图
22     for (int i = 0; i < m; i++)
23     {
24         int p, q, r;
25         cin >> p >> q >> r;
26         a[p - 1][q - 1] = r;
27         a[q - 1][p - 1] = r;
28     }//为每一条邻边赋权值
29 
30     //floyd算法计算每两点之间的最短距离
31     for (int k = 0; k < n; k++)
32         for (int i = 0; i < n; i++)
33             for (int j = 0; j < n; j++)
34             {
35                 if (a[i][k] + a[k][j] < 2003 && a[i][k] + a[k][j] < a[i][j])
36                     a[i][j] = a[i][k] + a[k][j];
37             }
38 
39     for (int i = 0; i < n; i++)//总共需要m轮次的循环
40     {
41         int pointer = 0;//写入sort_array的指针
42         for (int j = 0; j < 10000; j++)
43         {
44             sort_array[j] = inf;
45         }//先全部初始化为最大值
46         for (int j = 0; j < n; j++)
47         {
48             if (kind[j])
49             {
50                 sort_array[pointer] = a[i][j];
51                 pointer++;
52             }
53         }//此时已经将能到达的有效节点最短距离写入sort_array
54 
55         //利用sort函数对sort_array进行升序排序
56         sort(sort_array, sort_array + pointer);
57         int sum = 0;
58         for (int p = 0; p < k; p++)
59         {
60             if (sort_array[p] <= 1000)
61                 sum += sort_array[p];
62         }
63         cout << sum << endl;
64     }
65     system("pause");
66     return 0;
67 }

 

转载于:https://www.cnblogs.com/cs-yxk/p/11488413.html

你可能感兴趣的:(关于2019年ccf第五题317号子任务)