ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

POJ1861(Network)-Kruskal

2019-07-27 21:02:13  阅读:244  来源: 互联网

标签:map 题目 Network int MAX Kruskal Edge POJ1861 include


题目在这

Sample Input

4 6
1 2 1
1 3 1
1 4 2
2 3 1
3 4 1
2 4 1

Sample Output

1
4
1 2
1 3
2 3
3 4

题目意思:4个点,6个边,每个边有对应的权值。最后输出一行为路径中最大的边的值,第二行为路径上边的总数,

第三行为每条边的始末编号。题目需要求出最小生成树的最大边的最小值。

 1 /*
 2 Problem: 1861        User: 
 3 Memory: 416K        Time: 500MS
 4 Language: C++        Result: Accepted
 5 */
 6 #include <iostream>
 7 #include <algorithm>
 8 using namespace std;
 9 
10 #define MAX 15010
11 int p[1010];//存放父亲结点
12 
13 struct Edge
14 {
15     int u;
16     int v;
17     int w;
18 }map[MAX],ans[MAX];
19 
20 bool cmp(Edge a,Edge b)
21 {
22     return a.w<b.w;
23 }
24 
25 int Find(int a)
26 {
27     return a==p[a]?a:a=Find(p[a]);
28 }
29 
30 int main()
31 {
32     int N,M,i;
33     int a,b,c;
34     cin>>N>>M;
35     for(i=0;i<=N;i++)
36     {
37         p[i] = i;
38     }
39     for(i=0;i<M;i++)
40     {
41         cin>>a>>b>>c;
42         map[i].u = a;
43         map[i].v = b;
44         map[i].w = c;
45     }
46     sort(map,map+M,cmp);
47     int count = 0;
48     int maxEdge = 0;
49     for(i=0;i<M;i++){
50         int x = Find(map[i].u);
51         int y = Find(map[i].v);
52         if(x != y)
53         {
54             p[x] = y;//不在一个集合,合并
55             ans[count].u = map[i].u;
56             ans[count].v = map[i].v;
57             count ++;
58             if(map[i].w>maxEdge)
59                 maxEdge = map[i].w;
60         }
61     }
62     cout<<maxEdge<<endl;//路径中最长的边
63     cout<<count<<endl;//边的总数
64     for(i=0;i<count;i++)
65         cout<<ans[i].u<<" "<<ans[i].v<<endl;/输出每条路径
66     return 0;
67 }
View Code

 

标签:map,题目,Network,int,MAX,Kruskal,Edge,POJ1861,include
来源: https://www.cnblogs.com/ygsworld/p/11256659.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有