标签:node cnt int Kruskal t2 t1 P3366 find 模板
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 5 struct Node 6 { 7 int u, v, w; 8 }node[200005]; 9 10 int s[5005]; 11 int n, m; 12 int cnt; 13 int sum; 14 15 bool cmp(Node a, Node b) 16 { 17 return a.w < b.w; 18 } 19 20 int find(int a) 21 { 22 while (a != s[a]) 23 { 24 s[a] = s[s[a]]; 25 a = s[a]; 26 } 27 return a; 28 } 29 30 void kruskal() 31 { 32 sort(node, node + m, cmp); 33 for (int i = 0; i < m; i++) 34 { 35 int t1, t2; 36 t1 = find(node[i].u); 37 t2 = find(node[i].v); 38 if (t1 == t2) 39 { 40 continue; 41 }//通过并查集检测两节点是否连通 42 sum += node[i].w; 43 s[t2] = t1; 44 cnt++; 45 if (cnt == n - 1) break; 46 } 47 } 48 int main() 49 { 50 cin >> n >> m; 51 for (int i = 1; i <= n; i++) 52 { 53 s[i] = i; 54 } 55 for (int i = 0; i < m; i++) 56 { 57 cin >> node[i].u >> node[i].v >> node[i].w; 58 } 59 kruskal(); 60 cout << sum; 61 }View Code
标签:node,cnt,int,Kruskal,t2,t1,P3366,find,模板 来源: https://www.cnblogs.com/thjkhdf12/p/11641342.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。