zoukankan      html  css  js  c++  java
  • [HDOJ5883]The Best Path(欧拉回路,异或)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5883

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 #define fr first
     4 #define sc second
     5 #define cl clear
     6 #define BUG puts("here!!!")
     7 #define W(a) while(a--)
     8 #define pb(a) push_back(a)
     9 #define Rint(a) scanf("%d", &a)
    10 #define Rll(a) scanf("%I64d", &a)
    11 #define Rs(a) scanf("%s", a)
    12 #define Cin(a) cin >> a
    13 #define FRead() freopen("in", "r", stdin)
    14 #define FWrite() freopen("out", "w", stdout)
    15 #define Rep(i, len) for(int i = 0; i < (len); i++)
    16 #define For(i, a, len) for(int i = (a); i < (len); i++)
    17 #define Cls(a) memset((a), 0, sizeof(a))
    18 #define Clr(a, x) memset((a), (x), sizeof(a))
    19 #define Full(a) memset((a), 0x7f7f7f, sizeof(a))
    20 #define lrt rt << 1
    21 #define rrt rt << 1 | 1
    22 #define pi 3.14159265359
    23 #define RT return
    24 #define lowbit(x) x & (-x)
    25 #define onecnt(x) __builtin_popcount(x)
    26 typedef long long LL;
    27 typedef long double LD;
    28 typedef unsigned long long ULL;
    29 typedef pair<int, int> pii;
    30 typedef pair<string, int> psi;
    31 typedef pair<LL, LL> pll;
    32 typedef map<string, int> msi;
    33 typedef vector<int> vi;
    34 typedef vector<LL> vl;
    35 typedef vector<vl> vvl;
    36 typedef vector<bool> vb;
    37 
    38 const int maxn = 100100;
    39 int n, m;
    40 int ret, tmp;
    41 int a[maxn], in[maxn];
    42 int pre[maxn];
    43 
    44 int find(int x) {
    45     return x == pre[x] ? x : pre[x] = find(pre[x]);
    46 }
    47 
    48 void unite(int x, int y) {
    49     x = find(x);
    50     y = find(y);
    51     if(x != y) pre[x] = y;
    52 }
    53 
    54 signed main() {
    55     // FRead();
    56     int T, u, v;
    57     Rint(T);
    58     W(T) {
    59         Cls(in); ret = 0;
    60         Rint(n); Rint(m);
    61         For(i, 1, n+1) {
    62             pre[i] = i;
    63             Rint(a[i]);
    64         }
    65         Rep(i, m) {
    66             Rint(u); Rint(v);
    67             in[u]++; in[v]++;
    68             unite(u, v);
    69         }
    70         int flag = 0;
    71         For(i, 1, n+1) if(in[i] & 1) flag++;
    72         if(flag > 2 || flag == 1) {
    73             puts("Impossible");
    74             continue;
    75         }
    76         For(i, 1, n+1) {
    77             tmp = (in[i] + 1) / 2;
    78             W(tmp) ret ^= a[i];
    79         }
    80         if(flag == 2) {
    81             printf("%d
    ", ret);
    82             continue;
    83         }
    84         tmp = 0;
    85         For(i, 1, n+1) {
    86             if(in[i] != 0) {
    87                 int cur = ret ^ a[i];
    88                 tmp = max(tmp, cur);
    89             }
    90         }
    91         printf("%d
    ", tmp);
    92     }
    93     RT 0;
    94 }
  • 相关阅读:
    python基础一 day40 守护线程
    python基础一 day40 线程复习
    python基础一 day39 线程探索
    python基础一 day39 复习-回调函数
    python基础一 day38 进程池代码
    python基础一 day38 进程间的数据共享
    python基础一 day38 管道
    python基础一 day18 认识正则表达式及探索
    python小白-day3 函数
    python小白-day3 深浅拷贝
  • 原文地址:https://www.cnblogs.com/kirai/p/5885734.html
Copyright © 2011-2022 走看看