标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 315 Accepted Submission(s): 176
/* *********************************************** Author :guanjun Created Time :2016/2/16 19:02:06 File Name :bc72c.cpp ************************************************ */ #include <iostream> #include <cstring> #include <cstdlib> #include <stdio.h> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <math.h> #include <stdlib.h> #include <iomanip> #include <list> #include <deque> #include <stack> #define ull unsigned long long #define ll long long #define mod 90001 #define INF 0x3f3f3f3f #define maxn 300000+10 #define cle(a) memset(a,0,sizeof(a)) const ull inf = 1LL << 61; const double eps=1e-5; using namespace std; int fa[maxn],w[maxn],p[maxn],q[maxn],n,m; int findfa(int x){ if(x==fa[x])return x; return fa[x]=findfa(fa[x]); } void Union(int a,int b){ int x=findfa(a); int y=findfa(b); if(x>y)fa[x]=y; else if(y>x)fa[y]=x; } int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif //freopen("out.txt","w",stdout); int t,x,y,z; cin>>t; while(t--){ scanf("%d%d",&n,&m); for(int i=0;i<m;i++){ scanf("%d%d%d",&x,&y,&z); w[i]=z; p[i]=x; q[i]=y; } int ans=0; for(int i=30;i>=0;i--){ x=(1<<i); for(int ii=1;ii<=n;ii++)fa[ii]=ii; for(int j=0;j<m;j++){ if((w[j]&x)&&((w[j]&ans)==ans)){ //cout<<p[j]<<" "<<q[j]<<endl; Union(p[j],q[j]); } } int f=fa[1]; int mark=1; for(int ii=1;ii<=n;ii++){ if(fa[ii]!=f){ mark=0;break; } } if(mark)ans+=x; } printf("%d\n",ans); } return 0; }
标签:
原文地址:http://www.cnblogs.com/pk28/p/5193813.html