zoukankan      html  css  js  c++  java
  • Connect the Cities

    水题,但是g++超时,c++对了 不解

    #include<stdio.h>
    const int MAXN=505;
    const int INF=0x7fffffff;
    int xx[MAXN];
    int pre[MAXN];
    int map[MAXN][MAXN];
    int dist[MAXN];
    int ans,n,flag;
    
    void Prim()
    {
        int i,j,k;
        int mn;
        bool p[MAXN];
        for(i=2;i<=n;i++)
        {
            p[i]=false;
            pre[i]=1;
            dist[i]=map[1][i];
        }
        dist[1]=0;
        p[1]=true;
        for(i=1;i<=n-1;i++)
        {
            mn=INF;
            k=0;
            for(j=1;j<=n;j++)
            {
                if(!p[j] && dist[j]<mn)
                {
                    mn=dist[j];
                    k=j;
                }
            }
            if(k==0) {flag=1; return ;}
            p[k]=true;
            ans+=dist[k];
            for(j=1;j<=n;j++)
            {
                if(!p[j] && map[k][j]!=INF && dist[j]>map[k][j])
                {
                    dist[j]=map[k][j];
                    pre[j]=k;
                }
            }
        }
    }
    
    int main()
    {
        int T;
        int m,k,t,i,j,a,b,c;
        int xx[MAXN];
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d%d",&n,&m,&k);
            {
                for(i=1;i<=n;i++)
                {
                    for(j=1;j<=n;j++)
                    {
                        if(i==j) map[i][j]=0;
                        else map[i][j]=INF;
                    }
                }
                for(i=0;i<m;i++)
                {
                    scanf("%d%d%d",&a,&b,&c);
                    if(map[a][b]>c) map[a][b]=map[b][a]=c;
                }
                for(i=0;i<k;i++)
                {
                    scanf("%d",&t);
                    for(j=0;j<t;j++)
                      scanf("%d",&xx[j]);
                    for(j=1;j<t;j++)
                    {
                        map[xx[j]][xx[j-1]]=map[xx[j-1]][xx[j]]=0;
                    }
                }
                ans=flag=0;
                Prim();
                if(flag) printf("-1\n");
                else printf("%d\n",ans);
            }
        }
        return 0;
    }
  • 相关阅读:
    AdaBoost
    svm算法
    DBSCAN算法
    聚类算法分类
    EM算法
    ios开发中使用FMDB
    eclipse配置mahout
    【MyBatis】Mapper XML 文件
    MyBatis Generator的使用
    IntelliJ IDEA 创建 Maven简单项目
  • 原文地址:https://www.cnblogs.com/zsboy/p/2628071.html
Copyright © 2011-2022 走看看