poj_2421_mst
Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Description
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
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
Sample Input
3
0 990 692
990 0 179
692 179 0
1
1 2
Sample Output
179 刚开始用kruskal,结果tle 了,可能是我的代码写挫了吧。改为prim,wa了,改了cost[u][v]=cost[v][u]
#include<cstdio>
#include<cstring>
const int INF=0x3f3f3f;
const int MAXN=110;//看清上限
bool vis[MAXN];
int lowc[MAXN];
int cost[MAXN][MAXN];
int prim(int n)
{
memset(vis,false,sizeof(vis));
int ans=0;
vis[1]=true;
for(int i=2;i<=n;i++)
lowc[i]=cost[1][i];
for(int i=2;i<=n;i++)//我开始这里写成了i=1;当然一直是return -1;
{
int minc=INF;
int p=-1;
for(int j=1;j<=n;j++)
if(!vis[j]&&lowc[j]<minc)
{
minc=lowc[j];
p=j;
}
if(minc==INF)
return -1;
ans+=minc;
vis[p]=true;
for(int j=1;j<=n;j++)
if(!vis[j]&&cost[p][j]<lowc[j])
lowc[j]=cost[p][j];
}
return ans;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int w;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cost[i][j]=INF;
for(int i=1;i<=n;i++)
{
lowc[i]=INF;
for(int j=1;j<=n;j++)
{
scanf("%d",&w);
if(w<cost[i][j])//只保存最小权值
cost[i][j]=w;
}
}
int m;
scanf("%d",&m);
int u,v;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&u,&v);
cost[u][v]=cost[v][u]=0;//这里不能只写cost[u][v]=0;
}
int ans=prim(n);
printf("%d\n",ans);//我忘了要\n
}
return 0;
}
poj_2421_mst的更多相关文章
随机推荐
- 关于kafka连接不上别的机器问题Connection refused
1.确认config里面的server.properties 正确(包括IP+端口2181记得看清,用hostname的话记得etc/hostnames下面查看全部配置上没,建议用hostname方便 ...
- awesome-nlp
awesome-nlp A curated list of resources dedicated to Natural Language Processing Maintainers - Keon ...
- Tutorial: Triplet Loss Layer Design for CNN
Tutorial: Triplet Loss Layer Design for CNN Xiao Wang 2016.05.02 Triplet Loss Layer could be a tri ...
- 将HTML段赋值给PHP变量的便捷方法,不使用转义字符
<?php $b='12'; $a=<<<sss <html> <head> </head> <body> <i>& ...
- python命令行添加Tab键自动补全
1.编写一个tab的自动补全脚本,名为tab.py #!/usr/bin/python # python tab complete import sys import readline import ...
- SQL 显示所有表所占存储空间
USE master SELECT dbname = DB_NAME(), name, , , , /reserved END), , , [记录数] = rowcounts FROM ( SELEC ...
- SVG添加链接(转载)
转载地址:http://tech.techweb.com.cn/thread-258715-1-1.html 最基本的交互形式是链接.在 SVG 中,通过一个 <a> 标签提供链接,这与 ...
- gitignore 忽略文件夹
上面问题,按理说只要在.gitignore文件中加上 /dockAni/Library/ 即可实现. 但是我这样做了以后却发现sourceTree中仍然会列出Library中的文件. 最后在这个帖子中 ...
- unity, sceneview 中拾取球体gizmos
http://answers.unity3d.com/questions/745560/handle-for-clickable-scene-objects.html http://www.jians ...
- HTTP接口功能自动化测试入门
无论是浏览器上运行的Web应用还是移动端的H5应用,都离不开HTTP接口.Web应用通常是分为前后台开发的,后台提供接口调用返回Json对象,前台使用JS框架去加载后台返回的Json.而H5页面动态获 ...