先求出確定邊的聯通塊,有cnt塊,顯然方案數為2^(cnt-1)
聯通塊用dfs很好求
但此題還有並查集解法,且與一道叫團夥的題很像
邊為0為敵人,1為朋友,敵人的敵人是朋友,朋友的朋友是朋友,正好對應本題情況
資料在管理裡的檔案
現附上dfs版(並查集還沒寫)
#include#include#include
#include
#include
#include
#define mod (998244353)
using
namespace
std;
void read(int &x)
while(i>='
0'&&i<='9')
x*=f;
}int
t,n,m;
struct
node
edge[
2000005
];int size,head[100005],color[100005
],cnt;
void putin(int
from,int to,int
dis)
bool dfs(int
r)
else
}return
ans;
}int
main()
for(i=1;i<=n;i++)color[i]=-1
;
bool flag=1
;
for(i=1;i<=n;i++)}}
if(!flag)printf("
0\n"
);
else
printf(
"%d\n
",ans);}}
return0;
}
灰狼呼喚著同胞 brethren
先求出確定邊的聯通塊,有cnt塊,顯然方案數為2 cnt 1 聯通塊用dfs很好求 但此題還有並查集解法,且與一道叫團夥的題很像 邊為0為敵人,1為朋友,敵人的敵人是朋友,朋友的朋友是朋友,正好對應本題情況 資料在管理裡的檔案 現附上dfs版 並查集還沒寫 1 include2 include3 i...