HUD 5883 The Best Path(2016亚洲区青岛站网络赛)

来源:互联网 发布:警察 两种人 程序员 编辑:程序博客网 时间:2024/05/18 01:42

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

#include <cstdio>#include <cstring>#include <cmath>#include <ctime>#include <cstdlib>#include <queue>#include <stack>#include <string>#include <map>#include <vector>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;const int N=1e6+2;int s,n,m,k,p,q,t,r,y,x,u,v;int a[N],b[N];int main(){    scanf("%d",&t);    while(t--)    {        k=0;        memset(a,0,sizeof(a));        memset(b,0,sizeof(b));        scanf("%d%d",&n,&m);        for(int i=0; i<n; i++)        {            scanf("%d",&a[i]);        }        for(int j=0; j<m; j++)        {            scanf("%d%d",&u,&v);            b[u-1]++;            b[v-1]++;        }        for(int i=0; i<n; i++)        {            if(b[i]%2==1)                k++;        }        if(k==2||k==0)        {            p=0;            for(int i=0; i<n; i++)            {                q=(b[i]+1)/2;                for(int j=0; j<q; j++)                {                    p^=a[i];                }            }            if(k==2)            {                printf("%d\n",p);            }            else            {                s=0;                for(int i=0; i<n; i++)                {                    if(b[i]!=0)                    {                        q=p^a[i];                        s=max(s,q);                    }                }                printf("%d\n",s);            }        }        else            printf("Impossible\n");    }    return 0;}
0 0
原创粉丝点击