HDU-3371 Connect the Cities(最小生成树)
2016-07-27 01:31
399 查看
最小生成树
卡常数的水题,注意下细节就可以
#include<cstdio>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn = 500 + 5;
int p[maxn],c[maxn];
struct Road{
int x,y,cost;
bool operator<(const Road& _A)const{
return cost<_A.cost;
}
}r[maxn*maxn];
int find(int x){
return p[x]==x?x:(p[x]=find(p[x]));
}
int main(){
int i,T,n,m,k,t,p1,p2,ans,cnt;
// freopen("in.txt","r",stdin);
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&m,&k);
for(i=1;i<=n;i++) p[i]=i;
for(i=0;i<m;i++) scanf("%d%d%d",&r[i].x,&r[i].y,&r[i].cost);
sort(r,r+m);
while(k--){
scanf("%d%d",&t,&c[0]);
p1=find(c[0]);
for(i=1;i<t;i++) {
scanf("%d",&c[i]);
p2=find(c[i]);
if(p1!=p2) p[p2]=p1;
}
}
ans=0;
for(i=0;i<m;i++){
p1=find(r[i].x),p2=find(r[i].y);
if(p1!=p2) {
ans+=r[i].cost;
p[p2]=p1;
}
}
cnt=0;
for(i=1;i<=n;i++) if(find(i)==i) cnt++;
if(cnt>1) printf("-1\n");
else printf("%d\n",ans);
}
return 0;
}
卡常数的水题,注意下细节就可以
#include<cstdio>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn = 500 + 5;
int p[maxn],c[maxn];
struct Road{
int x,y,cost;
bool operator<(const Road& _A)const{
return cost<_A.cost;
}
}r[maxn*maxn];
int find(int x){
return p[x]==x?x:(p[x]=find(p[x]));
}
int main(){
int i,T,n,m,k,t,p1,p2,ans,cnt;
// freopen("in.txt","r",stdin);
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&m,&k);
for(i=1;i<=n;i++) p[i]=i;
for(i=0;i<m;i++) scanf("%d%d%d",&r[i].x,&r[i].y,&r[i].cost);
sort(r,r+m);
while(k--){
scanf("%d%d",&t,&c[0]);
p1=find(c[0]);
for(i=1;i<t;i++) {
scanf("%d",&c[i]);
p2=find(c[i]);
if(p1!=p2) p[p2]=p1;
}
}
ans=0;
for(i=0;i<m;i++){
p1=find(r[i].x),p2=find(r[i].y);
if(p1!=p2) {
ans+=r[i].cost;
p[p2]=p1;
}
}
cnt=0;
for(i=1;i<=n;i++) if(find(i)==i) cnt++;
if(cnt>1) printf("-1\n");
else printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- Codeforces Round #364 (Div. 2)C
- 托管调试助手“NonComVisibleBaseClass”检测到问题
- HDU-5441 Travel(并查集)
- ping命令原理及其所属的协议
- Linux命令常用之输出重定向
- 稀奇古怪的问题
- 字符串-10878 Decode the tape
- 一个简单的TCP服务器
- Xamarin For Visual Studio第一坑 - Android SDK版本问题
- 04_排序_归并排序
- Top K Frequent Elements
- 博客开通
- 固定-浮动定位在顶部的div
- 项目结构:音乐播放器
- 多语言架构下如何正确的使用SQL视图
- 文章标题 51nod 最大公约数之和
- pc串口通信
- 三、Basic Command
- 一、Download and Install Centos6.8
- Linux命令常用之history