hdoj 1102 Constructing Roads (prim)
来源:互联网 发布:宁夏网络教育 编辑:程序博客网 时间:2024/06/05 06:12
Constructing Roads
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 20783 Accepted Submission(s): 7942
Problem Description
There are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say two village A and B are connected, if and only if there is a road between A and B, or there exists a village C such that there is a road between A and C, and C and B are connected.
We know that there are already some roads between some villages and your job is the build some roads such that all the villages are connect and the length of all the roads built is minimum.
We know that there are already some roads between some villages and your job is the build some roads such that all the villages are connect and the length of all the roads built is minimum.
Input
The first line is an integer N (3 <= N <= 100), which is the number of villages. Then come N lines, the i-th of which contains N integers, and the j-th of these N integers is the distance (the distance should be an integer within [1, 1000]) between village i and village j.
Then there is an integer Q (0 <= Q <= N * (N + 1) / 2). Then come Q lines, each line contains two integers a and b (1 <= a < b <= N), which means the road between village a and village b has been built.
Then there is an integer Q (0 <= Q <= N * (N + 1) / 2). Then come Q lines, each line contains two integers a and b (1 <= a < b <= N), which means the road between village a and village b has been built.
Output
You should output a line contains an integer, which is the length of all the roads to be built such that all the villages are connected, and this value is minimum.
Sample Input
30 990 692990 0 179692 179 011 2
Sample Output
179
代码:
#include<cstdio>#include<cstring>#define INF 0x3f3f3fint dis[110],vis[110];int map[110][110];int ans;void prim(int n){memset(dis,INF,sizeof(dis));memset(vis,0,sizeof(vis));dis[1]=0;vis[1]=1;ans=0;for(int i=1;i<=n;i++){dis[i]=map[i][1];}for(int i=2;i<=n;i++){int k=-1;for(int j=1;j<=n;j++){if(!vis[j]&&(k==-1||dis[j]<dis[k]))k=j;}vis[k]=1;ans+=dis[k];for(int j=1;j<=n;j++){if(!vis[j]&&dis[j]>map[j][k])dis[j]=map[j][k];}}printf("%d\n",ans);}int main(){int n,m;int a,b;while(~scanf("%d",&n)){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&map[i][j]);}}scanf("%d",&m);for(int i=1;i<=m;i++){scanf("%d%d",&a,&b);map[a][b]=map[b][a]=0;}prim(n);}return 0; }
0 0
- hdoj 1102 Constructing Roads (prim)
- HDOJ题目1102Constructing Roads(最小生成树,prim)
- HDOJ 1102 Constructing Roads.(Prim算法实现)
- HDU-#1102 Constructing Roads(Prim & Kruskal)
- hdu 1102 Constructing Roads(prim)
- hdu 1102 Constructing Roads(Prim)
- 航电1102-Constructing Roads (prim)
- HDU 1102 Constructing Roads(Prim算法)
- HDU-1102 Constructing Roads(prim)
- HDOJ 1102 Constructing Roads 最小生成树 kruskal && Prim
- hdoj 1102 Constructing Roads 【最小生成树&&prim】
- HDOJ-1102-Constructing Roads
- HDOJ 1102 Constructing Roads
- HDU 1102 Constructing Roads(prim)
- 【hdu】 Constructing Roads (prim)
- hdu1102 Constructing Roads(prim)
- HDOJ--1102--Constructing Roads(包含题意)
- hdu/hdoj 1102 Constructing Roads
- Skipping Items in Foreach loop container
- mybatis用集合多层封装查询结果
- grid添加滚动条之viewConfig——autoFill、forceFit属性初了解
- 0-1背包把数组压缩到一维后为何要倒序循环
- 内核与文件系统
- hdoj 1102 Constructing Roads (prim)
- android studio安装遇见的问题
- HttpClient 使用get方式发送数据到服务器并下载服务器文件
- com.google.gson.stream.MalformedJsonException的解决办法
- 欢迎使用CSDN-markdown编辑器
- JVM堆内存设置原理
- 基于NX的研发产品设计管理平台实现(一)--概述及目录
- Golang 测试
- 能否实现 Ext.grid.ColumnModel 宽度动态适应