关于2019年ccf第五题317号子任务
Posted cs-yxk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于2019年ccf第五题317号子任务相关的知识,希望对你有一定的参考价值。
第一次接触图论算法写出来这一题以后可以通过测试样例,但是提交以后总是提示错误,先挂着。。。不知道什么时候找出bug
(最后return前的system(“pause”) 是用来在vs里面调试用的)
希望大佬也能帮忙看下错误噢(今天刚刚申请的博客)
1 #include<iostream> 2 #include <algorithm> 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
以上是关于关于2019年ccf第五题317号子任务的主要内容,如果未能解决你的问题,请参考以下文章
第16次CCF CSP认证-第5题-317 号子任务(subtask317)-图论最短路径