競技プログラミング日記

主に AtCoder の記事です

AtCoder Beginner Contest 262E

ABC262E

赤い頂点 \(v\) の内,\(deg_{v} \equiv 1 \ mod \ 2\) のもの全体を \(X\) とおく.
場合分けして数える. \(X\) がら丁度 \(i\) 個 (\(i \in [0,N]\)かつ\(i \equiv 0 \ mod\ 2\)) 選ぶ場合の数の合計が答え.

使っている記号,マクロ等 "https://ecsmtlir.hatenablog.com/entry/2022/12/23/131925"

int main() {
    ll n,m,k; cin >> n >> m >> k;
    vvll to(n);
    vll deg_out(n);
    rep(i,m){
      ll a, b; cin >> a >> b;
      --a, --b;
      deg_out[a]++;
      deg_out[b]++;
      // to[a].push_back(b);
      // to[b].push_back(a);
    }

    ll c1 = 0;
    rep(i,n){
      if(deg_out[i] % 2 == 1) c1++;
    }
   

    mint ans = 0;
    Comb<mint, (ll)(2e5)+10> co;
    for(int i = 0; i <= n ; i+=2){
      ans += co.nCr(c1, i) * co.nCr(n-c1, k-i);
    }
    cout << ans.val() << endl;


  return 0;
}