PAT T1016 Uniqueness of MST

Posted zhanglichen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT T1016 Uniqueness of MST相关的知识,希望对你有一定的参考价值。

dfs判断连通块的数量,prim算法建立最小生成树并判断是否唯一~

#include<bits/stdc++.h>
using namespace std;
const int maxn=1014;
const int inf=1e9;
int g[maxn][maxn];
int d[maxn];
int visit[maxn];
int N,M;
struct edge {
    int v1,v2;
}; 
vector<edge> vi;
void dfs (int s) {
    visit[s]=true;
    for (int i=1;i<=N;i++) 
    if (g[s][i]!=inf&&visit[i]==false) dfs(i);
}
int dfsTrave () {
    int block=0;
    for (int i=1;i<=N;i++) {
        if (visit[i]==false) {
            dfs(i);
            block++;
        }
    }
    return block;
}
int flag=0;
int prim (int s) {
    fill (d,d+maxn,inf);
    fill (visit,visit+maxn,0);
    d[s]=0;
    int ans=0;
    for (int i=1;i<=N;i++) {
        int u=-1,min=inf;
        for (int j=1;j<=N;j++) 
        if (visit[j]==false&&d[j]<min) {
            u=j;
            min=d[j];
        }
        if (u==-1) return -1;
        visit[u]=1;
        ans+=d[u];
        int num=0;
        for (int v=1;v<=N;v++) 
        if (visit[v]&&g[u][v]==min) num++;
        if (num>1) flag++;
        for (int v=1;v<=N;v++) {
            if (visit[v]==false&&g[u][v]!=inf&&g[u][v]<d[v]) 
            d[v]=g[u][v];
        }
    }
    return ans;
}
int main () {
    scanf ("%d %d",&N,&M);
    int u,v;
    for (int i=1;i<=N;i++) 
    for (int j=1;j<=N;j++)
    g[i][j]=inf;
    for (int i=0;i<M;i++) {
        scanf ("%d %d",&u,&v);
        scanf ("%d",&g[u][v]);
        g[v][u]=g[u][v];
    } 
    int block=dfsTrave ();
    if (block>1) {
        printf ("No MST
");
        printf ("%d",block);
        return 0;
    }
    fill (visit,visit+maxn,false);
    int mst=prim(1);
    printf ("%d
",mst);
    if (flag==0) printf ("Yes");
    else printf ("No");
    return 0;
}

 

以上是关于PAT T1016 Uniqueness of MST的主要内容,如果未能解决你的问题,请参考以下文章

validates_uniqueness_of elasticsearch 持久性

Rails validates_uniqueness_of 跨越多个不区分大小写的列

cvc-id.3: A field of identity constraint ‘web-app-servlet-name-uniqueness‘ matched element ‘web-app‘

PAT甲级1053 Path of Equal Weight (30 分)(DFS)

PAT A1153 Decode Registration Card of PAT [硬核模拟]

oj---pat----a1034. Head of a Gang (30)