代码行

会飞的代码

B - Constructing Roads (vj)

模板题……用数组下标从0开始,老是不对,改成1才ac,而且这道题用prime相对较优,31ms


#include<bits/stdc++.h>
using namespace std;
const int maxn=0x3f3f3f;
int Map[105][105],vis[105],low[105];
int n,ans;
void prime()
{
    int next;
    memset(vis,0,sizeof(vis));
    for(int i=1;i<=n;i++) low[i]=Map[1][i];
    vis[1]=1;
    for(int i=1;i<n;i++)
    {
        int mini=maxn;
        for(int j=1;j<=n;j++)
        {
            if(!vis[j]&&low[j]<mini)
            {
                mini=low[j];
                next=j;
            }
        }
        ans+=mini;
        vis[next]=1;
        for(int j=1;j<=n;j++)
            if(!vis[j]&&low[j]>Map[next][j])
            low[j]=Map[next][j];
    }
}
int main()
{
    while(scanf("%d",&n)==1)
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
            scanf("%d",&Map[i][j]);
        int q,a,b;
        scanf("%d",&q);
        while(q--)
        {
            scanf("%d%d",&a,&b);
            Map[a][b]=0,Map[b][a]=0;
        }
        ans=0;
        prime();
        printf("%d\n",ans);
    }
    return 0;
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41061455/article/details/80351977
文章标签: 最小生成树
个人分类: 最小生成树
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

B - Constructing Roads (vj)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭