HDU 3234 Exclusive-OR 擴充套件並查集
這個題坑了我兩小時,查了半天,最後發現自己一直都弄錯了運算子的優先性。val[p]^val[q]!=v是錯的,應該寫成((val[p]^val[q])!=v),異或運算子優先性比關係運算子==低#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int root[20010],val[20010],temp[20],xor[20],roo[20];
int n,Q;
int query(int x){
int tem;
if(root[x]!=x){
tem=root[x];
root[x] = query(root[x]);
val[x]=val[x]^val[tem];
}
return root[x];
}
void Union(int x,int y,int Val){
int tem1,tem2;
tem1=query(x);
tem2=query(y);
if(tem1==n){
swap(tem1,tem2);
}
root[tem1]=tem2;
val[tem1]=val[x]^val[y]^Val;
}
int main(){
int l,i,j,k,p,q,v,flag,fa1,fa2,sign,cas,boo,fact;
int num,in,tem,all,ans;
char a[10240],str[10240];
cas=0;
while(scanf("%d %d",&n,&Q)==2 && !(n==0 && Q==0)){
fact=0;
printf("Case %d:\n",++cas);
for(i=0;i<=n;i++)
root[i]=i;
memset(val,0,sizeof(val));
flag=0;
for(l=1;l<=Q;l++){
scanf("%s",a);
if(flag){gets(str);continue;}
if(a[0]=='I'){
fact++;
gets(str);
int t=sscanf(str,"%d%d%d",&p,&q,&v);
if(t==2){
swap(q,v);
q=n;
}
fa1=query(p);
fa2=query(q);
if(fa1==fa2){
if((val[p]^val[q])!=v)
if(!flag){
flag=1;
printf("The first %d facts are conflicting.\n", fact);
}
}
else if(fa1!=fa2){
Union(p,q,v);
}
}
else{
scanf("%d",&num);
all=0;
memset(xor,0,sizeof(xor));
memset(roo,0,sizeof(roo));
memset(temp,0,sizeof(temp));
for(j=1;j<=num;j++){
scanf("%d",&in);
tem=query(in);
if(j!=1){
for(k=1;k<=all;k++){
if(roo[k]==tem)
break;
}
}
if(j==1 || k==all+1){
temp[++all]=1;
roo[all]=tem;
xor[all]=val[in];
}
else{
temp[k]++;
xor[k]^=val[in];
}
}
ans=0;
if(flag)
continue;
sign=0;
for(i=1;i<=all;i++){
if(temp[i]%2==1 && roo[i]!=n){
printf("I don't know.\n");
sign=1;
break;
}
ans^=xor[i];
}
if(!sign)
printf("%d\n",ans);
}
}
puts("");
}
return 0;
}
相關文章
- 並查集擴充套件並查集套件
- 並查集擴充套件應用並查集套件
- POJ 1733 Parity【擴充套件域並查集】套件並查集
- POJ 1182 食物鏈【擴充套件域 | 邊帶權並查集】套件並查集
- 關押罪犯 擴充套件域並查集 帶權並查集 二分圖+二分套件並查集
- POJ 2492 A bug's life【擴充套件域 | 邊帶權並查集】套件並查集
- manacher || 擴充套件kmp -- Best Reward HDU - 3613套件KMP
- 擴充套件叢集blk數套件
- 乾貨丨如何水平擴充套件和垂直擴充套件DolphinDB叢集?套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- 開源 | FLUI : Flutter 的元件擴充套件集UIFlutter元件套件
- 檢查PHP擴充套件是否安裝成功PHP套件
- 擴充套件工具套件
- Sanic 擴充套件套件
- Mybatis擴充套件MyBatis套件
- SpringMVC 擴充套件SpringMVC套件
- ORACLE 擴充套件Oracle套件
- ncurses其他特性:curs_set(),離開curses模式,ACS_擴充套件字符集,擴充套件庫模式套件
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- iOS 通知擴充套件iOS套件
- swift擴充套件ExtensionsSwift套件
- 擴充套件BSGS/exBSGS套件
- Json擴充套件方法JSON套件
- 分類擴充套件套件
- 提高擴充套件性套件
- HttpContext擴充套件類HTTPContext套件
- DOM部分擴充套件套件
- LINQ擴充套件方法套件
- Flask 自建擴充套件Flask套件
- 新增php擴充套件PHP套件
- 擴充套件表示式套件
- 擴充套件包上傳套件
- Nmap 擴充套件(四)套件
- 可擴充套件性套件
- 19-擴充套件套件