JZOJ 2126. [GDOI 2003] 테두리 삭제

디렉토리:
  • 제목:
  • 분석:
  • 코드(및 조회):
  • 제목:


    제목 보기

    분석:


    이 제목은 정말 물입니다. 가장 일반적인 방법은 바로 뛰고 수집하는 것입니다. 또한 수론 AC: 우리는 하나의 연결도를 형성하려면 최소 n-1개의 변(n을 포인트로 한다)이 필요하다는 것을 알고 있습니다. 그리고 n을 알고 최대 몇 개의 변을 삭제해야 하는지 알고 있습니다. 즉, m-(n-3-1)m--(n-3-1), 간소화하면 m-n+1m-n+1m입니다.

    코드(및 조회):

    #include
    #include
    #include
    #include
    #include
    #include
    #define LL long long
    using namespace std;
    inline LL read() {
        LL d=0,f=1;char s=getchar();
        while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
        while(s>='0'&&s<='9'){d=d*10+s-'0';s=getchar();}
        return d*f;
    }
    int f[101];
    int find(int x)
    {
        return x==f[x]? x:f[x]=find(f[x]);
    }
    void hb(int x,int y)
    {
        int a,b;
        a=find(x);b=find(y);
        f[a]=b;
    }
    int main()
    {    
        int n=read(),m=read();
        for(int i=1;i<=n;i++) f[i]=i;
        int ans=0,a,b;
        for(int i=1;i<=m;i++)
        {
            a=read();b=read();
            if(find(a)==find(b)) continue;
            ans++;
            hb(a,b); 
        }
        printf("%d",m-ans);
        return 0;
    }

    좋은 웹페이지 즐겨찾기