最小生成树HDU 3371

用Kruskal没优化:超时 改prim
cin : 超时

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

#define ll long long
using namespace std;
//const int mod=;
#define INF 0x3f3f3f3f
const int maxn=510;
int n,m,k;
int mp[maxn][maxn];
int d[maxn];
bool vis[maxn];

void prim(){
    int ans = 0;
    int flot = 0;
    memset(vis,0,sizeof(vis));
    vis[1] = 1;
    for(int i=1; i<=n; i++)
        d[i] = mp[1][i];
    for(int i=1; i<=n; i++){
        int mmin = INF;
        int end = -1;
        for(int j=1; j<=n; j++){
            if(!vis[j] && d[j]<mmin){
                end = j;
                mmin = d[j];
            }
        }
        if(mmin == INF){
            if(flot==n-1)
                printf("%d\n",ans);
            else
                printf("-1\n");
            return ;
        }
        vis[end] = 1;
        flot++;
        ans += mmin;
        for(int j=1; j<=n; j++)
            if(!vis[j] && d[j]>mp[end][j])
                d[j] = mp[end][j];
    }
}

int main(void){
    int T;
    scanf("%d",&T);
    while(T--){
        scanf("%d %d %d",&n,&m,&k);
        memset(mp,INF,sizeof(mp));
        int a,b,c;
        while(m--){
            scanf("%d %d %d",&a,&b,&c);
            if(c<mp[a][b])
                mp[a][b] = mp[b][a] = c;
        }
        while(k--){
            scanf("%d %d",&a,&b);
            while(--a){
                scanf("%d",&c);
                mp[b][c] = mp[c][b] = 0;
            }
        }
        prim();
    }
    return 0;
}

不知道为什么改成

int end = -1;
        for(int j=1; j<=n; j++){
            if(!vis[j] && (end==-1 || d[j]<d[end]))
                end = j;
        }
        if(end == -1){
            if(flot==n-1)
                printf("%d\n",ans);
            else
                printf("-1\n");
            return ;
        }
        vis[end] = 1;
        flot++;
        ans += d[end];
        for(int j=1; j<=n; j++)
            if(!vis[j] && d[j]>mp[end][j])
                d[j] = mp[end][j];

会错

发布了62 篇原创文章 · 获赞 0 · 访问量 1764

猜你喜欢

转载自blog.csdn.net/jhckii/article/details/104313129