POJ 1251 Jungle Roads(最小生成树裸prim)
来源:互联网 发布:淘宝蚂蚁花呗无法开通 编辑:程序博客网 时间:2024/05/17 09:27
有多个岛屿,部分岛屿之间有路连接,但是维护一条道路要花费一定的费用。现在让你在保证所有岛联通的情况下,使维护费用最小并输出。
思路:直接的prim。
#include<stdio.h>int T,i,j,k,num,wei;int record[30000],distance[30000];//记录该点是否被访问int weight[3000][3000];int findmin();//寻找到生成树最近的一个点void renew(int x);//加入该点后进行更新int main(){ while(scanf("%d",&T)&&T!=0)//村庄数 { char start[1000],end[1000]; int sum=0; for(i=1;i<=T;i++) for(j=1;j<=T;j++) weight[i][j]=99999; for(i=1;i<T;i++) { scanf("%s",start); scanf("%d",&num);//有几条道路 for(j=1;j<=num;j++) { scanf("%s",end);//%c会RE scanf("%d",&wei); weight[start[0]-'A'+1][end[0]-'A'+1]=wei; weight[end[0]-'A'+1][start[0]-'A'+1]=wei; } } for(i=1;i<=T;i++) { record[i]=0; weight[i][i]=0; distance[i]=weight[1][i]; } record[1]=1; for(i=1;i<T;i++) { j=findmin(); record[j]=1; sum+=distance[j]; renew(j); } printf("%d\n",sum); } return 0;}int findmin(){ int i,j=999999,k; for(i=2;i<=T;i++) if(!record[i]&&distance[i]<j) { j=distance[i]; k=i; } return k;}void renew(int x){ int i,j,k; for(i=1;i<=T;i++) if(!record[i]&&distance[i]>weight[x][i]) distance[i]=weight[x][i];}
- POJ 1251 Jungle Roads(最小生成树裸prim)
- poj 1251 Jungle Roads prim最小生成树基础
- POJ 1251 Jungle Roads (最小生成树 Prim普里姆算法)
- POJ-1251 Jungle Roads 最小生成树(prim算法)
- POJ 1251 Jungle Roads 最小生成树
- poj 1251 Jungle Roads ---最小生成树
- Poj 1251 Jungle Roads -- 最小生成树
- poj 1251 Jungle Roads 最小生成树
- POJ 1251 Jungle Roads(最小生成树)
- poj 1251 Jungle Roads 最小生成树
- Jungle Roads - POJ 1251 最小生成树
- POJ-1251 Jungle Roads(最小生成树)
- poj 1251 Jungle Roads(最小生成树)
- POJ 1251 Jungle Roads 最小生成树
- [最小生成树] poj 1251 Jungle Roads
- poj 1251 Jungle Roads 最小生成树
- poj 1251 Jungle Roads(最小生成树)
- POJ 1251 Jungle Roads 【最小生成树】
- HDOJ 1004 Water~
- 结合实例谈SqlParameters的使用
- Android自定义扁平化对话框
- HDU 1102 Constructing Roads(prim)
- 万里长征,始于足下——菜鸟程序员的学习总结(二)
- POJ 1251 Jungle Roads(最小生成树裸prim)
- 游戏成就系统的实现
- POJ 1258 Agri-Net(裸prim)
- PermGen space错误解决方法
- php内置函数实现 验证邮箱,url地址格式是否合法
- hdu1856 More is better(并查集,运用了压缩路径)
- RAID 0,1,0+1,1+0,5简介
- oracle审计功能
- UVa408 Uniform Generator