n年沒寫題解於是一時興起就來寫一下
先考慮無解情況
如果有點度數》2那肯定無解 還有 環的情況也會無解
那麼度數為1或2的點 他們肯定是連成一條條的鏈
這些鏈的組合方案只有2種 就是只能翻轉一下
答案就是 (度數為0的點數+鏈數)! * (2^鏈數)
**可能不夠美觀?(貌似並不快)
#include
using
namespace
std;
typedef
long
long ll;
const
int n=500010,mod=989381;
inline
int read()
while(ch>='0' && ch<='9')
return x*f;
}vector
v[n];
ll jc[n];
bool b[n];
struct node;
queue
q;int main()
if(o)continue;
v[x].push_back(y);
v[y].push_back(x);
}int cnt=0,u=0; ll ans=1;
bool no=0;
for(i=1;i<=n;++i)
if(v[i].size()>2)
if(no)
for(i=1;i<=n;++i) if(!b[i] && v[i].size()==2)); b[i]=1; ++u,++cnt;
while(!q.empty())
if(!b[y]));}
}if(no)break;
}if(no)break;
ans=ans*2%mod;
}if(no)
for(i=1;i<=n;++i) if(!b[i] && v[i].size()==1)
ans=ans*jc[cnt+(n-u)]%mod;
printf("%lld\n",ans);
return
0;}
bzoj3444 並查集 最後的晚餐
description 問題背景 高三的學長們就要離開學校,各奔東西了。某班n人在舉行最後的離別晚餐時,飯店老闆覺得十分糾結。因為有m名學生偷偷找他,要求和自己暗戀的同學坐在一起。問題描述 飯店給這些同學提供了乙個很長的桌子,除了兩頭的同學,每乙個同學都與兩個同學相鄰 即坐成一排 給出所有資訊,滿足...
bzoj 3444 最後的晚餐 並查集
題目 n個人排成一排,有m個條件,第i個條件要求ai和bi相鄰,求方案數。資料範圍 100 的資料,0 n 500000,1 ai,bi n,0 m n,保證沒有人自戀。演算法 並查集 組合數 難度 noip 題解 由於要求排成一排,因此如果關係出現了環則無解 而乙個位置最多挨著兩個,所以deg x...
最後的晚餐
今天公司同事請我吃飯,算是給我踐行。相處了四年多,大家關係都很好,每個人的脾氣性格都很熟悉了,實在是有點捨不得。還記得剛進公司的時候,還心裡暗暗發誓 要在這裡做一輩子,幹出一番事業來。可今天卻跟同事說 人不可能一輩子呆在一家公司的。這一前一後的反差,自己都覺得自己有點善變了。可仔細想來,這就是成長吧...