HDU 1102 Constructing Roads(Prim算法)
来源:互联网 发布:网络教育不考学位证 编辑:程序博客网 时间:2024/06/06 09:54
Constructing Roads
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 20793 Accepted Submission(s): 7944
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.
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.
30 990 692990 0 179692 179 011 2
179
本题题中直接给出了邻接矩阵,比较方便。对于已经建设道路的村庄,可以直接把他们之间的距离设置为0。
下面附上AC代码:
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int map[1001][1001];
int dist[1001];
int visited[1001];
int n,sum;
const int inf=9999999;
void Prim()
{
sum=0;
memset(visited,0,sizeof(visited));
visited[1]=1;
for(int i=1;i<=n;i++)
dist[i]=map[1][i];
for(int i=1;i<n;i++)
{
int min=inf;
int pos;
for(int j=1;j<=n;j++)
{
if(!visited[j]&&min>dist[j])
{
min=dist[j];
pos=j;
}
}
if(min>=inf) break;
visited[pos]=1;
sum+=min;
for(int j=1;j<=n;j++)
{
if(!visited[j]&&dist[j]>map[pos][j])
dist[j]=map[pos][j];
}
}
}
int main()
{
while(cin>>n)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>map[i][j];
int q;
cin>>q;
while(q--)
{
int a,b;
cin>>a>>b;
map[a][b]=0;
map[b][a]=0;
}
Prim();
cout<<sum<<endl;
}
return 0;
}
- HDU 1102 Constructing Roads(Prim算法)
- Prim 算法, hdu 1102 Constructing Roads
- HDU - 1102 - Constructing Roads (最小生成树--prim算法!!)
- HDU 1102 Constructing Roads (最小生成树 Prim算法)
- HDU-#1102 Constructing Roads(Prim & Kruskal)
- hdu 1102 Constructing Roads(prim)
- hdu 1102 Constructing Roads(Prim)
- HDU-1102 Constructing Roads(prim)
- HDU 1102 Constructing Roads(prim)
- 【hdu】 Constructing Roads (prim)
- HDU 1102 && POJ 2421 Constructing Roads (经典MST~Prim)
- HDU 1102 Constructing Roads(Prim求最小生成树)
- HDU-1102 Constructing Roads(最小生成树[Prim])
- HDU 1102 Constructing Roads(最小生成树-Prim)
- hdu 1102 Constructing Roads(最小生成树,prim)
- HDU 1102 Constructing Roads(prim求最小生成树)
- hdu 1102 Constructing Roads (prim 、kruskal)
- HDU 1102:Constructing Roads【Kruskal & Prim】
- php连接Access数据库的三种方法
- HDU 1285 确定比赛名次
- android4.4+实现MD状态栏并全屏显示内容
- hive:访问hive
- NOIP2005普及组 循环
- HDU 1102 Constructing Roads(Prim算法)
- js中的date,定时任务
- 离散数学之把妹要诀
- java-linux交互
- 文件缓存与内存缓存
- 欧拉函数
- List
- Android MaterialDesign(一)
- HDU 1711 Big Event in HDU(01背包+多重背包)