zoukankan      html  css  js  c++  java
  • ural Graph Decomposition

    呃,题目是不长,但是太难理解了,不知道present还有分解的意思,看了discuss里的各种猜,还是没弄懂,最后看了解题报告,就一句话,每次删除连通分支里相邻的两条边,问最后能否全部删除完。呃,思路也很简单,如果每个连通分支里的边都为偶数则输出1,否则输出0.用并查集来实现。

    代码:

    View Code
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <math.h>
    #include <map>
    #include <queue>
    #include <vector>
    #include <stack>
    #define  N 1004
    #define  INF 1000000000
    using namespace std ;
    
    int num[N] , f[N] ;
    
    void init()
    {
        memset( num , 0 , sizeof ( num )) ;
        for ( int i = 0 ; i < N ; i++ )
        f[i] = i ;
    }
    
    int find( int x )
    {
        if ( x != f[x] )
        f[x] = find( f[x] ) ;
        return f[x] ;
    }
    
    int main()
    {
        int x , y , a , b ;
        init() ;
        while ( scanf ( "%d%d" , &x , &y ) != EOF )
        {
            a = find( x ) ;
            b = find( y ) ;
            if ( a != b )
            {
                f[b] = a ;
                num[a] += num[b] ;
            }
            ++num[a];
            //cout<<num[a]<<endl ;
        }
        bool flag = true ;
        for ( int i = 1 ; i < N ; i++ )
        if ( f[i] == i && num[i] % 2 )
        {
            flag = false ;
            break ;
        }
        if( flag )
        printf( "1\n" ) ;
        else
        printf( "0\n" ) ;
        return 0 ;
    }
  • 相关阅读:
    Checkpointing
    Flink1.10全文跟读翻译
    The Broadcast State Pattern
    mr原理简单分析
    Event Time
    动态规划潜入
    寻找hive数据倾斜路
    Distributed Runtime
    druid18.1版本single-server启动报错
    Programming Model
  • 原文地址:https://www.cnblogs.com/misty1/p/2880830.html
Copyright © 2011-2022 走看看