HDOJ1301 prim
2016-05-26 20:53
471 查看
#include"iostream" #include"algorithm" using namespace std; const int maxn=100; const int inf=999999999; int c[maxn][maxn]; int dist[maxn]; int s[maxn]; int n; int prim() { memset(s,0,sizeof(s)); int i,j; int u=0; int len=0; for(i=0;i<n;i++) dist[i]=c[0][i]; s[0]=1; for(i=0;i<n-1;i++) { int Min=inf; for(j=0;j<n;j++) if(!s[j]&&dist[j]<Min) { Min=dist[j]; //cout<<"M"<<Min<<" "; u=j; } //if(Min==inf) return -1; //cout<<Min<<endl; len+=Min; s[u]=1; for(j=0;j<n;j++) { if(!s[j]&&dist[j]>c[u][j]) dist[j]=c[u][j]; } } return len; } int main() { //freopen("a.txt","r",stdin); while(cin>>n&&n) { int i,j; int si,sj; for(i=0;i<n;i++) { for(j=0;j<n;j++) if(i==j) c[i][j]=0; else c[i][j]=inf; dist[i]=inf; } for(i=0;i<n-1;i++) { char a; int number; cin>>a>>number; si=a-'A'; while(number--){ char b; int len; cin>>b>>len; sj=b-'A'; if(len<c[si][sj]) c[si][sj]=c[sj][si]=len; } } /*for(i=0;i<n;i++) { for(j=0;j<n;j++) cout<<c[i][j]<<" "; cout<<endl; } */ cout<<prim()<<endl; } return 0; }
相关文章推荐
- sdut 3274 山理工第七届校赛--完美素数
- C++的一些简单示例(3)
- 2016/5/26
- 【转】js 关键字 in 的使用方法
- lua 源码阅读顺序
- PHP - 如何解决中文乱码
- PHP - 如何解决中文乱码
- Vuejs学习(一)简要的TODOList
- 河南省第六届大学生程序设计竞赛 F Card Trick
- 搬瓦工VPS(Centos6_x86)+LNMP+WordPress搭建个人博客/网站
- POJ 1067 威佐夫博弈
- sdut 3272 山理工第七届校赛--字符的变化
- POJ 1067 威佐夫博弈
- 用JS生成MIDI文件(附代码)
- 谁的青春不迷茫
- 【操作系统】linux创建子进程--fork()方法
- GridView属性大全
- Touch panel DTS 分析(MSM8994平台,Atmel 芯片)
- 数组中增加或者删除元素
- Android之Adapter用法总结