码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 2421(prim)

时间:2016-08-01 17:48:34      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

http://poj.org/problem?id=2421

这个题和poj1258是一样的,只要在1258的基础上那么几行代码,就可以A,水。

题意:还是n连通问题,和1258不同的就是这个还有几条路在之前就已经连通了的,所以不需要再去连。

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 
 5 #define inf 100009
 6 
 7 bool mark[1001];
 8 int a[1001][1001],dis[1001],ans,n;
 9 
10 int prim()
11 {
12    for(int i=1;i<=n;i++)
13     dis[i]=inf;dis[1]=0;
14     for(int i=1;i<=n;i++){
15         int tep=inf;int k=0;
16         for(int j=1;j<=n;j++){
17             if(mark[j]&&dis[j]<tep)
18             {
19                 tep=dis[j];
20                 k=j;
21             }
22         }
23         if(tep==inf) return 0;
24         ans+=tep;
25         mark[k]=false;
26         for(int j=1;j<=n;j++)
27             if(mark[j]&&dis[j]>a[k][j])
28                 dis[j]=a[k][j];
29        }
30    return 0;
31 }
32 
33 int main()
34 {
35     while(scanf("%d",&n)!=EOF)
36     {
37         int x=0,c,b;
38         memset(mark,true,sizeof(mark));
39         ans=0;
40         for(int i=1;i<=n;i++)
41             for(int j=1;j<=n;j++)
42                 scanf("%d",&a[i][j]);
43         scanf("%d",&x);
44         while(x--)
45         {
46             scanf("%d%d",&b,&c);
47             a[b][c]=0;
48             a[c][b]=0;
49         }
50         prim();
51         printf("%d\n",ans);
52     }
53 }

 

POJ 2421(prim)

标签:

原文地址:http://www.cnblogs.com/Tree-dream/p/5726457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!