• HDU 4696 Answers 水题


    http://acm.hdu.edu.cn/showproblem.php?pid=4696

    由题意可知 1<=Ci<=2 而且图上一定有环

    那么我们可以得出:

    只要存在奇环(即Ci=1)..那么对于所有自然数Mi都能得到

    否则就是偶环 只有Mi是偶数才能得到

    /********************* Template ************************/
    #include <set>
    #include <map>
    #include <list>
    #include <cmath>
    #include <ctime>
    #include <deque>
    #include <queue>
    #include <stack>
    #include <bitset>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <cassert>
    #include <cstdlib>
    #include <cstring>
    #include <sstream>
    #include <fstream>
    #include <numeric>
    #include <iomanip>
    #include <iostream>
    #include <algorithm>
    #include <functional>
    using namespace std;
    
    #define EPS         1e-8
    #define MAXN        100005
    #define MOD         (int)1e9+7
    #define PI          acos(-1.0)
    #define DINF        (1e10)
    #define LINF        ((1LL)<<50)
    #define INF         (0x3f3f3f3f)
    #define max(a,b)    ((a) > (b) ? (a) : (b))
    #define min(a,b)    ((a) < (b) ? (a) : (b))
    #define max3(a,b,c) (max(max(a,b),c))
    #define min3(a,b,c) (min(min(a,b),c))
    #define BUG         cout<<"BUG! "<<endl
    #define line        cout<<"--------------"<<endl
    #define L(t)        (t << 1)
    #define R(t)        (t << 1 | 1)
    #define Mid(a,b)    ((a + b) >> 1)
    #define lowbit(a)   (a & -a)
    #define FIN         freopen("in.txt","r",stdin)
    #define FOUT        freopen("out.txt","w",stdout)
    #pragma comment     (linker,"/STACK:102400000,102400000")
    
    // typedef long long LL;
    // typedef unsigned long long ULL;
    // typedef __int64 LL;
    // typedef unisigned __int64 ULL;
    // LL gcd(LL a,LL b){ return b?gcd(b,a%b):a; }
    // LL lcm(LL a,LL b){ return a*b/gcd(a,b); }
    
    /*********************   F   ************************/
    int to[MAXN];
    bool vis[MAXN];
    int val[MAXN];
    int main()
    {
        //FIN;
        //FOUT;
        int n,Q,c;
        while(~scanf("%d%d",&n,&Q)){
            memset(vis,false,sizeof(vis));
            for(int i = 1 ; i <= n ; i++)
                scanf("%d",&to[i]);
            for(int i = 1 ; i <= n ; i++)
                scanf("%d",&val[i]);
            bool odd_cir = false;
            for(int i = 1 ; i <= n && !vis[i] ; i++){
                if(val[i] == 1){
                    int res = 0;
                    for(int j = i ;; j = to[j]){
                        res += val[i];
                        vis[j] = true;
                        if(vis[to[j]] == true) {
                            odd_cir = true;
                            break;
                        }
                    }
                    if(odd_cir == true) break;
                }
            }
            for(int i = 0 ; i < Q ; i++){
                scanf("%d",&c);
                if(c <= 0) puts("NO");
                else {
                    if(odd_cir == true)
                        puts("YES");
                    else{
                        if(c % 2 == 0) puts("YES");
                        else puts("NO");
                    }
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    jq 判断单选是否选中
    C# Split 分隔符为字符串及空格的处理
    MSSQL中的bit类型
    js 判断textarea 不为空
    [转]C#中out 及 ref 区别
    [转]asp.net中时间差的问题
    [转]C# Array 数组 及 一些操作
    Addr、@运算符与Pointer类型
    关于Pascal语言中的分号
    关于以后的文章
  • 原文地址:https://www.cnblogs.com/Felix-F/p/3275779.html
Copyright © 2020-2023  润新知