HDU 5631 Rikka with Graph

Posted

tags:

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

如果原图不连通,直接输出0.

如果原图连通,删除X条边之后要保证新图连通,再看数据是n+1条边-->因此,最多只能删去两条边。

因为n=100,可以枚举进行验证,枚举删去每一条边是否连通,枚举删去每两条边是否连通,验证是否连通可以用并查集,可以BFS。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<vector>
#include<queue>
#include<algorithm>
#include<iostream>
using namespace std;

const int maxn=100+10;
int n;
int fa[maxn];
int u[maxn],v[maxn];
long long c[maxn][maxn];
int T;
int ans;

int Find(int x)
{
    if(x!=fa[x]) fa[x]=Find(fa[x]);
    return fa[x];
}


int main()
{
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n); ans=0;
        for(int i=1;i<=n+1;i++)
            scanf("%d%d",&u[i],&v[i]);

        for(int i=0;i<=n;i++) fa[i]=i;
        int un=n;
        for(int i=1;i<=n+1;i++)
        {
            int fu=Find(u[i]);
            int fv=Find(v[i]);
            if(fu!=fv)
            {
                un--;
                fa[fu]=fv;
            }
        }

        if(un!=1) ans=0;
        else
        {
            for(int i=1;i<=n+1;i++)
            {
                for(int k=0;k<=n;k++) fa[k]=k;
                un=n;
                for(int k=1;k<=n+1;k++)
                {
                    if(k==i) continue;
                    int fu=Find(u[k]);
                    int fv=Find(v[k]);
                    if(fu!=fv)
                    {
                        un--;
                        fa[fu]=fv;
                    }
                }
                if(un==1) ans=ans+1;
            }

            for(int i=1;i<=n+1;i++)
            {
                for(int j=i+1;j<=n+1;j++)
                {
                    for(int i=0;i<=n;i++) fa[i]=i;
                    un=n;
                    for(int k=1;k<=n+1;k++)
                    {
                        if(k==i||k==j) continue;
                        int fu=Find(u[k]);
                        int fv=Find(v[k]);
                        if(fu!=fv)
                        {
                            un--;
                            fa[fu]=fv;
                        }
                    }
                    if(un==1) ans=ans+1;
                }
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

 

以上是关于HDU 5631 Rikka with Graph的主要内容,如果未能解决你的问题,请参考以下文章

hdu 5631 Rikka with Graph(图)

hdu 6090 Rikka with Graph

HDU 6090 17多校5 Rikka with Graph(思维简单题)

Rikka with Graph hdu 6090

HDU 6090 Rikka with Graph —— 2017 Multi-University Training 5

HDU 5634 Rikka with Phi