先求出確定邊的聯通塊,有cnt塊,顯然方案數為2^(cnt-1)
聯通塊用dfs很好求
但此題還有並查集解法,且與一道叫團夥的題很像
邊為0為敵人,1為朋友,敵人的敵人是朋友,朋友的朋友是朋友,正好對應本題情況
資料在管理裡的檔案
現附上dfs版(並查集還沒寫)
1 #include2 #include3 #include4 #include5using
namespace
std;
6struct
node
7edge[2000001
];10
int head[100001],num,col[100001
],n,m,cnt;
11long
long
ans;
12bool
ok;13
void add(int u,int v,int
d)14
21void dfs(int
x)22
31else
3236}37
}38intmain()
39 51
for (i=1;i<=n;i++) col[i]=-1
;52 ok=1;53
for (i=1;i<=n;i++)
54if (col[i]==-1)55
60 ans=1;61
if (!ok) printf("
0\n"
);62
else
6368
}69 }
灰狼呼喚著同胞 brethren
先求出確定邊的聯通塊,有cnt塊,顯然方案數為2 cnt 1 聯通塊用dfs很好求 但此題還有並查集解法,且與一道叫團夥的題很像 邊為0為敵人,1為朋友,敵人的敵人是朋友,朋友的朋友是朋友,正好對應本題情況 資料在管理裡的檔案 現附上dfs版 並查集還沒寫 include include inclu...