第一次接触图论算法写出来这一题以后可以通过测试样例,但是提交以后总是提示错误,先挂着。。。不知道什么时候找出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 }
原文地址:https://www.cnblogs.com/cs-yxk/p/11488413.html
时间: 2024-11-09 03:36:48