ZOJ 1406.Jungle Roads
来源:互联网 发布:上门修手机 知乎 编辑:程序博客网 时间:2024/05/20 16:41
给出所有村庄的所有通路,找出一条连接所有村庄花费最小的通路。
最小生成树的应用。此处用的是Prim算法。
#include<iostream>#include<queue>using namespace std;struct Graph{ //图邻接矩阵 char data; int key; int *adjacency;}*G;int n; //村庄数量int m; //邻接村庄数量int *parent; //在最短路径中连接村庄的上一个村庄bool *visited; //标识村庄是否已在最短路径上int *key; //本村庄离已有通路的村庄的最短距离void Create(){ //初始化 parent = new int[n]; visited = new bool[n]; G = new Graph[n]; for(int i=0; i<n; i++){ G[i].adjacency = new int[n]; G[i].key = 1<<30; visited[i] = false; parent[i] = -1; for(int j=0; j<n; j++){ G[i].adjacency[j] = 0; } } for(int i=0; i<n-1; i++){ cin>>G[i].data; cin>>m; for(int j=0; j<m; j++){ char c; int pow; cin>>c>>pow; G[i].adjacency[c - 'A'] = G[c - 'A'].adjacency[i] = pow; } } G[n-1].data = n - 1 + 'A';}int Prim(){ int result = 0; //累加结果 G[0].key = 0; for(int j=0; j<n; j++){ int min = 0; for(int k=1; k<n; k++){ if(G[min].key > G[k].key){ min = k; } } visited[min] = true; result += G[min].key; G[min].key = 1<<30; for(int i=0; i<n; i++){ if(!visited[i] && G[min].adjacency[i] && G[min].adjacency[i] < G[i].key){ parent[i] = min; G[i].key = G[min].adjacency[i]; } } } return result;}int main(){ while(cin>>n && n!=0){ Create(); cout<<Prim()<<endl; } return 0;}
- ZOJ 1406.Jungle Roads
- zoj 1406 Jungle Roads
- zoj 1406 Jungle Roads
- zoj - 1406 - Jungle Roads
- ZOJ 1406 Jungle Roads
- zoj 1406 jungle roads
- ZOJ 1406 Jungle Roads (kruskal)
- ZOJ 1406 Jungle Roads 【kruskal】
- prim zoj 1406 Jungle Roads
- zoj 1406 Jungle Roads(Prim || Kruskal)
- ZOJ 1406 Jungle Roads (最小生成树)
- zoj 1406 Jungle Roads 最小生成树
- zoj 1406 Jungle Roads(简单-MST)
- ZOJ 1406 Jungle Roads (最小生成树)
- Jungle roads (zoj 1406 hdoj 1301)
- zoj 1406 poj 1251 Jungle Roads
- POJ 1251 Jungle Roads (zoj 1406) MST
- (最小生成树)ZOJ 1406 Jungle Roads
- 编程真难。。。
- IOS获取屏幕分辨率
- Windows7帮你监控记录电脑使用
- GridView和Gallery基本用法
- 几种方法创建cocos2d游戏菜单
- ZOJ 1406.Jungle Roads
- php 根据两点的经纬度计算距离
- Android 自定义ContentProvider
- Eclipse中的文本编码设置
- 【对转载进行了部分解释】CRoutingZone的实现机制 以及 process()中一些函数的意义
- C语言中通过分隔符来截取字符串
- java 设计模式学习笔记十二 command命令设计模式
- 2BizBox平台与插件开发概述
- 为ckeditor添加行距的功能