TakahiroNakamori

TakahiroNakamori

ナカモリタカヒロ

 
 

Friend Suggestions

問題

D – Friend Suggestions
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…

記録

解法

コード例

  • コード例1

    
    
    < は < に変更する。
    #include <bits/stdc++.h>
    using namespace std;
    #include <atcoder/all>
    using namespace atcoder;
    using ll = long long;
    using P = pair<int, int>;
    #define rep(i, n) for(int i = 0; i < (n); ++i)
    // using mint = modint998244353;
    // using mint = modint1000000007;
    // const int mod = 1000000007;
    // const ll INF = 1LL << 62;
    // const int INF = 1001001001;
    
    int main() {
      int N, M, K;
      cin >> N >> M >> K;
    
      dsu uf(N);
      vector<int> friends(N);
      vector<vector<int>> blocks(N);
    
      rep(i, M) {
        int A, B;
        cin >> A >> B;
        A–;
        B–;
        friends[A]++;
        friends[B]++;
        uf.merge(A, B);
      }
    
      rep(i, K) {
        int C, D;
        cin >> C >> D;
        C–;
        D–;
        blocks[C].push_back(D);
        blocks[D].push_back(C);
      }
    
      rep(i, N) {
        int ans = uf.size(i) – friends[i] – 1;
        for(auto j : blocks[i]) {
          if(uf.same(i, j)) {
            ans–;
          }
        }
        cout << ans << ” “;
      }
    
      cout << endl;
      return 0;
    }