(最小生成树)ZOJ 1406 Jungle Roads
2017-04-23 21:58
381 查看
查看原题
第一行输入有n个村庄,接下去n-1行分别输入村庄名,与其相邻的村庄数,相邻村庄名,两村庄之间的距离
题意
最小生成树第一行输入有n个村庄,接下去n-1行分别输入村庄名,与其相邻的村庄数,相邻村庄名,两村庄之间的距离
思路
Prim代码
#include <iostream> using namespace std; int main(int argc, char *argv[]) { int n,vnum,map[30][30],low[30],cost; char v1,v2; while(cin>>n&&n){ int total=0; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(i==j)map[i][j]=0; else map[i][j]=999999; } } for(int i=1;i<n;i++){ cin>>v1>>vnum; while(vnum--){ cin>>v2>>cost; if(cost<map[v1-'A'+1][v2-'A'+1]) map[v1-'A'+1][v2-'A'+1]=map[v2-'A'+1][v1-'A'+1]=cost; } } for(int i=1;i<=n;i++){ low[i]=map[1][i]; } for(int i=1;i<n;i++){ int least=999999,leastnum=0; for(int j=1;j<=n;j++){ if(low[j]<least&&low[j]!=0){ least=low[j]; leastnum=j; } } if(leastnum!=0){ low[leastnum]=0; total+=least; for(int k=1;k<=n;k++){ if(map[leastnum][k]<low[k]){ low[k]=map[leastnum][k]; } } } } cout<<total<<endl; } return 0; }
相关文章推荐
- ZOJ 1406 Jungle Roads (最小生成树)
- ZOJ 1406 Jungle Roads (最小生成树)
- zoj 1406 Jungle Roads(最小生成树))
- ZOJ 1406 POJ 1251 Jungle Roads 丛林中的道路,最小生成树,Kruskal算法
- zoj 1406 Jungle Roads 最小生成树
- zoj 1406 Jungle Roads(最小生成树)
- zoj1406----------Jungle Roads 最小生成树 prim
- zoj 1406 最小生成树 kruskal 和 prim用法
- POJ1251 || ZOJ1406 kruskal求最小生成树
- zoj 1406 最小生成树
- poj 1251 Jungle Roads 最小生成树
- [POJ](1251)Jungle Roads ---最小生成树(图)
- ZOJ 1584:Sunny Cup 2003 - Preliminary Round(最小生成树&&prim)
- zoj 3946 Highway Project (spfa + 最小生成树)
- POJ 1251 Jungle Roads(最小生成树)
- HDU1301 POJ1251 Jungle Roads【Prim】【最小生成树】
- zoj_1406 Jungle Roads
- POJ1251_Jungle Roads(最小生成树)
- ZOJ 1406 Jungle Roads (kruskal)
- POJ 1251 Jungle Roads (zoj 1406) MST