北大1154
来源:互联网 发布:android跟java? 编辑:程序博客网 时间:2024/05/16 07:10
查找根
#include<iostream>#include<stdio.h>#include<algorithm>using namespace std;int Tree[50];int findRoot(int x){ if(Tree[x]==-1)return x; else{ int tmp = findRoot(Tree[x]); Tree[x] = tmp; return tmp; }} struct Edge{ int a,b; int weight;}edge[800];bool cmp(Edge a,Edge b){ return a.weight<b.weight;} int main(){ int n; char m1,m2; int k,num;//k为该点后面有几条路 while(scanf("%d",&n)!=EOF&&n!=0){ int size = 0;//边数 for(int i = 1;i<n;i++) { scanf(" %c %d",&m1,&k); for(int j = 1;j<=k;j++) { scanf(" %c %d",&m2,&num); edge[size].a=m1-'A'+1;//点的编号 edge[size].b=m2-'A'+1; edge[size].weight=num; size++; } } sort(edge,edge+size,cmp); for(int i = 1;i<50;i++) Tree[i]=-1; int res = 0; for(int i = 0;i<size;++i) { int a = findRoot(edge[i].a); int b = findRoot(edge[i].b); if(a!=b) { Tree[a]=b; res+=edge[i].weight; } } printf("%d\n",res); } return 0;}
0 0
- 北大1154
- 北大简介
- 北大青鸟
- 北大青鸟
- 北大青鸟
- 北大acm1005
- 北大acm1008
- 北大1547
- 北大1120
- 北大1019
- 北大1006
- 北大1590
- 北大1491
- 北大1591
- 北大1595
- 北大2894
- 北大1001
- 北大1699
- ContentProvider
- 使用亚马逊云服务器踩过的坑,如何取消按需实例
- [C/C++] 程序解析
- 制作文字Web Font图标
- Android项目开发(1)-登录页面知识总结
- 北大1154
- 【经典转载】Linux进程学习系列之五 等待进程结束wait()和waitpid()函数
- 关于豪威RK3288_M180串口改物料说明
- 如何阻止iframe里引用的网页自动跳转
- Java基础--线程池的应用
- js笔记 3.11
- 内存分配方式
- Linux系统常用Shell命令:文件查看与查找
- 面向对象