HDU 1863 畅通工程

Portal:http://acm.hdu.edu.cn/showproblem.php?pid=1863

依然最小生成树+并查集

因为不保证所有村庄在一个强连通分量里,所以用并查集要判断能否“畅通”

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<set>
 4 #include<cstdio>
 5 #include<cstdlib>
 6 #include<cmath>
 7 #include<vector>
 8 using namespace std;
 9 #define FOR(i,j,k) for(int i=j;i<=k;i++)
10 #define FORD(i,j,k) for(int i=j;i>=k;i--)
11 #define LL long long
12 #define maxnn 10110
13 #define maxn 110
14 struct edge{int u,v,cost;};
15 edge bb[maxnn];
16 int father[maxn],val[maxn];
17 int n,x,y,z,k,ans;
18 void setinit()
19 {
20     FOR(i,1,n)
21     {father[i]=i; val[i]=1;}
22 }
23 int setfind(int x)
24 {
25     int fa=father[x];
26     if(fa==x) return x;
27     else return father[x]=setfind(fa);
28 }
29 bool setunion(int xx,int yy)
30 {
31     int XX=setfind(xx);
32     int YY=setfind(yy);
33     if(XX==YY) return false;
34     if(val[XX]>val[YY]) father[YY]=XX;
35     else father[XX]=YY;
36     if(val[XX]=val[YY]) val[XX]++;
37     return true;
38 }
39 bool cmp1(edge a,edge b)
40 {
41     return a.cost<b.cost;
42 }
43 void kruskal()
44 {
45     sort(bb+1,bb+k+1,cmp1);
46     FOR(i,1,k)
47     if(setunion(bb[i].u,bb[i].v)) ans+=bb[i].cost;
48 }
49 bool setcheck()
50 {
51     FOR(i,1,n-1)
52     if(setfind(i)!=setfind(i+1)) return false;
53     return true;
54 }
55 int main()
56 {
57 for(cin>>k>>n;k!=0;cin>>k>>n)
58 {
59     FOR(i,1,k)
60     {
61         cin>>x>>y>>z;
62         bb[i].u=x;
63         bb[i].v=y;
64         bb[i].cost=z;
65     }
66     setinit();
67     ans=0;
68     kruskal();
69     if(setcheck())cout<<ans<<endl;else cout<<‘?‘<<endl;
70 }
71 return 0;
72 }

乱搞出奇迹

哈哈哈哈0msAC,计划通

时间: 2024-12-18 09:48:18

HDU 1863 畅通工程的相关文章

HDU 1863 畅通工程 (最小生成树)

Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本.现请你编写程序,计算出全省畅通需要的最低成本. Input 测试输入包含若干测试用例.每个测试用例的第1行给出评估的道路条数 N.村庄数目M ( < 100 ):随后的 N 行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间

HDU 1863 畅通工程 (最小生成树)

畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 16937    Accepted Submission(s): 7099 Problem Description 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设

hdu 1863 畅通工程 (并查集+最小生成树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863 畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17593    Accepted Submission(s): 7417 Problem Description 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交

HDU 1863 畅通工程【最小生成树,Prime算法+Kuruskal算法】

畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 25784    Accepted Submission(s): 11234 Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列

&lt;hdu - 1863&gt; 畅通工程 并查集和最小生成树问题

本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863  Problem Description: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本.现请你编写程序,计算出全省畅通需要的最低成本.  Input: 测试输入包含若干测试用例.每个测试用例的第1行给出评估的道路条数 N.村庄数目M ( < 100

hdu 1863 畅通工程()

本题链接:点击打开链接 本题题意: 有n条路m个村庄,输入每条路连接哪两个村庄,及修该段路的费用,求使所有村庄均可畅通(并非两两均连通) 的最少费用. 解题思路: 此题与hdu 1233 还是畅通工程  相类似,均是使用kruskal算法思想. 具体请参考代码: #include<stdio.h> #include<algorithm> using namespace std; int per[110]; int n,m; struct node{ int u,v,w; }a[11

hdu 1863(畅通工程)(简单的并查集,模板)

畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 17933    Accepted Submission(s): 7589 Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出

hdu 1863 畅通工程 最小生成树模板入门题 prim+kruskal两种算法AC。

畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 18866    Accepted Submission(s): 8012 Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出

HDU 1863 畅通工程 (最小数prim)

畅通工程 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本.现请你编写程序,计算出全省畅通需要的最低成本. Input 测试输入包含若干测试用例.每个测试用例的第1行给出评估的道路条

HDU - 1863 - 畅通工程 (最小生成树!!prim算法!!)

畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 18223    Accepted Submission(s): 7726 Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出