POJ 2421 Constructing Roads

14人阅读 评论(0) 收藏 举报
分类:

POJ 2421
读题错误,认为是给出q次询问,每次算出u到v的路径上的最小路。
真正题意是,给出q对点,表示这q对已经联通,然后再求联通其他点所需的路径长度。
最小生成树prime模板,只要把联通的点变成0即可。

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
const int maxn=105;
const int inf=0x3f3f3f3f;
int n;
int mapp[maxn][maxn];
int dis[maxn];
int vis[maxn];
void init()
{
    memset(mapp,inf,sizeof(mapp));
    for(int i=0; i<=n; i++) mapp[i][i]=0;
}
int prime()
{
    memset(vis,0,sizeof(vis));
    int k=0;
    for(int i=1;i<=n;i++)
        dis[i]=mapp[1][i];
    vis[1]=1;
    int sum=0;
    while(k<n-1)
    {
        int minn=inf,index;
        for(int i=1;i<=n;i++)
        {
            if(!vis[i]&&dis[i]<minn)
                minn=dis[i],index=i;
        }
        sum+=minn;
        vis[index]=1;
        k++;
        for(int i=1;i<=n;i++)
        {
            if(!vis[i]&&dis[i]>mapp[index][i])
                dis[i]=mapp[index][i];
        }
    }
    return sum;
}
int main()
{
    while(~scanf("%d",&n)&&n)
    {
        //init();
        //int m=n*(n-1)/2;
        for(int i=1; i<=n; i++)
        {
            for(int j=1;j<=n;j++)
            {
                scanf("%d",&mapp[i][j]);
            }
        }
        int q;
        scanf("%d",&q);
        for(int i=1;i<=q;i++)
        {
            int u,v,w;
            scanf("%d%d",&u,&v);
            //w=mapp[u][v];
            mapp[u][v]=mapp[v][u]=0;

            //mapp[u][v]=mapp[v][u]=w;
        }printf("%d\n",prime());
    }
    return 0;
}
查看评论

POJ-2421-Constructing Roads(最小生成树 普利姆)

D - Constructing Roads Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u...
  • qq_32680617
  • qq_32680617
  • 2016-05-21 19:43:15
  • 465

poj2421Constructing Roads(最小生成树)

思路:一些已经连好的边添加一条权值为0的路,然后就是上模板了,又SB忘记init() #include #include #include #include #include #i...
  • qq_21057881
  • qq_21057881
  • 2016-01-31 23:16:29
  • 422

POj 2041 Constructing Roads

题目链接: http://poj.org/problem?id=2421 赤裸裸的最小生成树习题! #include #include using namespace std; const in...
  • lsgqjh
  • lsgqjh
  • 2015-05-29 12:42:58
  • 460

Constructing Roads poj

Description There are N villages, which are numbered from 1 to N, and you should build some roads...
  • clx55555
  • clx55555
  • 2016-09-02 11:06:39
  • 144

POJ:2421 Constructing Roads

与这个题基本一样。 http://blog.csdn.net/kkkwjx/article/details/12316701   最小生成树的题要搞清楚点的个数,边的个数,不要混了。   #...
  • kkkwjx
  • kkkwjx
  • 2013-10-06 13:10:13
  • 455

POJ 2421 Constructing Roads

Constructing Roads Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 2330...
  • qq_35776409
  • qq_35776409
  • 2017-03-17 16:20:33
  • 91

Constructing Roads POJ - 2421

原oj网址点击打开链接vj网址点击打开链接这道题 是一个不择不扣的送分题 就是一个最小生成树 大意就是输入m个数  后面有m行 n行代表 1 -m n需要通过的数字  然后 接下来几行 代表一个双向图...
  • qq_41071646
  • qq_41071646
  • 2018-04-17 21:08:34
  • 2

HDOJ 1102 Constructing Roads(最小生成树)

Constructing Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe...
  • zwj1452267376
  • zwj1452267376
  • 2015-08-11 21:07:43
  • 663

【POJ】[2421]Constructing Roads

这题的难度在于 题目已经帮助连通了一些村庄 要求其余的 不过只要直接把对应的村庄距离更新为0就好了...
  • u011493189
  • u011493189
  • 2016-02-20 05:27:39
  • 152

POJ 2421 constructing roads

稍微改了一下的最小生成树。其实很简单,有路了就不用建造路了,直接把已经接通的公路的距离赋值为0,就好办了,接下来就是赤裸裸的prim算法。   #include #include using na...
  • zhuyongqingacm
  • zhuyongqingacm
  • 2013-04-29 20:55:24
  • 792
    动漫

    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 4万+
    积分: 2289
    排名: 2万+
    博客专栏
    最新评论