vijos 1234 口袋的天空
2015-06-23 15:56
423 查看
最小生成树kruscal算法
#include<iostream> #include<algorithm> #include<cstring> #define maxn 10005 using namespace std; struct stu { int x,y; int t; }; stu mapp[maxn]; int f[1005]; int n,m,k,sum,flag; bool cmp(stu x,stu y) { return x.t<y.t; } int dfs(int x) { if(f[x]!=x) f[x]=dfs(f[x]); return f[x]; } void build(int x) { if(dfs(mapp[x].x)!=dfs(mapp[x].y)) { f[dfs(mapp[x].x)]=dfs(mapp[x].y); sum+=mapp[x].t; } } int solve() { int re=0; for(int i=1;i<=n;i++) { if(f[i]==i) re++; } if(re==k) return 1; else return 0; } int main() { while(cin>>n>>m>>k) { for(int i=0;i<1005;i++) f[i]=i; sum=0; flag=0; for(int i=0;i<m;i++) cin>>mapp[i].x>>mapp[i].y>>mapp[i].t; sort(mapp,mapp+m,cmp); for(int i=0;i<m;i++) { build(i); if(solve()) { flag=1; cout<<sum<<endl; break; } } if(!flag) cout<<"No Answer"<<endl; } return 0; }
相关文章推荐
- Android之WebRTC介绍
- undefined使用注意
- 为什么需要MiniDao? 新持久层 3.5.1 版本发布,让hibernate跟mybatis一样灵活
- (2) 图像拉直-Image Straighten
- 【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题
- Test markdown
- LA 3635 Pie (二分)
- h265核心技术
- Windows 10.1控制面板即将消失
- 使用root账户登录ubuntu 15.04
- Hadoop FS Shell
- xcode6制作动态库及合并不同架构动态库
- 多窗口
- 创建回调函数
- gsoap生成服务端客户端代码文件说明
- 阅读13到17章提出问题
- js禁止网页使用右键
- Mysql 函数大全
- 安装R语言包
- Linux登录ssh携带密码