hdu 3371
#include<stdio.h>
#include<stdlib.h>
#define N 501
struct node {
int x,y,dis;
}road[N*N];
int pre[N];
int find (int n ) {
return pre[n]=n==pre[n]?n:find(pre[n]);
}
int cmp(const void *a,const void *b) {
return (*(struct node *)a).dis>(*(struct node *)b).dis?1:-1;
}
int main() {
int n,m,k,t,a,b,c,cnt,sum,flag,i,j,len,f1,f2;
scanf("%d",&t);
while(t--) {
scanf("%d%d%d",&n,&m,&k);
for(i=1;i<=n;i++)
pre[i]=i;
for(i=0;i<m;i++) {
scanf("%d%d%d",&a,&b,&c);
road[i].x=a;
road[i].y=b;
road[i].dis=c;
}
sum=0;
cnt=0;
qsort(road,m,sizeof(road[0]),cmp);
while(k--) {
scanf("%d%d",&len,&a);
f1=find(a);
len--;
while(len--) {
scanf("%d",&b);
f2=find(b);
if(f1!=f2) {
cnt++;
pre[f2]=f1;
}
}
}
for(i=0;cnt<n&&i<m;i++) {
f1=find(road[i].x);
f2=find(road[i].y);
if(f1!=f2) {
cnt++;
sum+=road[i].dis;
pre[f2]=f1;
}
}
if(cnt==n-1)
printf("%d\n",sum);
else
printf("-1\n");
}
return 0;
}
最新文章
- [Asp.net]Uploadify上传大文件,Http error 500 解决方案
- javase基础复习攻略《七》
- iOS 10 UserNotifications 框架解析
- c#读取INI文件类
- Eclipse 中打不开android sdk managerf
- POJ 1185 (状态压缩DP)
- Androidannotation使用之@Rest与server交互的JSON数据转换(二)
- ashx页面 “检测到有潜在危险的 Request.Form 值”的解决方法(控制单个处理程序不检测html标签)
- MySql数据库1【概念】
- (转)Facade模式
- Android 随着输入框控件的清除功能ClearEditText,抄IOS输入框
- XAF_GS_01_准备环境
- git多个远程仓库
- 【足迹C++primer】32、定制操作_2
- python全栈开发day55-mysql外键的三种变种
- 第一章:初识Python
- android 管理fragment
- Eclipse使用xdoclet1.2.3 生成hibernate配置文件和映射文件
- Hibernate开发环境搭建
- C++数组与指针回顾总结