Problem A
来源:互联网 发布:核算成本的软件 编辑:程序博客网 时间:2024/05/16 18:50
30 990 692990 0 179692 179 011 2
179
代码:
#include<iostream> #include<algorithm> using namespace std; struct node{ int from; int to; int w; };node edge[102*100]; int parent[102]; bool cmp(node a,node b) { if(a.w<=b.w) return true; return false; }//查找已经建完道路的顶点int find(int a){ if(a!=parent[a]) return find(parent[a]); else return a;} int kruskal(int n,int m) { sort(edge,edge+m,cmp);//将边的权值从小到大排序 int i,x,y,ans=0; for(i=0;i<m;i++) { x=edge[i].from; y=edge[i].to; x=find(x); y=find(y); if(x!=y) { ans+=edge[i].w; parent[y]=x; }} return ans; } int main() { int n,q,k,i,j,m; while(cin>>n) { m=0; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { cin>>k; if(i>=j) continue;//标记过的不用重复记录 edge[m].from=i; edge[m].to=j; edge[m].w=k; m++; } } for(k=1;k<=n;k++) parent[k]=k; cin>>q; //将建完的道路的起点和终点都置为相同的起点 for(k=1;k<=q;k++) { cin>>i>>j; i=find(i); j=find(j); parent[j]=i; } //n个点,m条边 cout<<kruskal(n,m)<<endl; } return 0; }
- Problem A
- Problem A
- Problem A
- Problem A
- Problem A
- Problem A
- Problem A
- Problem A
- problem A
- Problem a
- Problem A
- Problem A
- Problem-A
- Problem A
- Problem A
- Problem A
- Problem A
- problem 1000: A+B problem
- Java程序员使用的20几个大数据工具
- 给公司的电脑配置theano
- 将pdf文件转换成jpg图片
- 如何提高工作效率
- 一个鼓,左右手轮流敲打。
- Problem A
- iOS开发中的一些常用方法
- 浅谈MVP实现Android应用层开发
- LA 3401 Colored Cubes
- Android工程师应该具备的四大开发习惯
- Android 设计模式之单例模式
- jsp自定义标签实例
- php 类中调用另一个类
- Java 中集合框架知识点的总结