ivnikkk

Untitled

Jun 1st, 2022 (edited)
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #define debug(tl) cerr<<#tl<<' '<<tl<<'\n';
  3. #define de(tl) cerr<<#tl<<' '<<tl<<"   ";
  4. #include "bits/stdc++.h"
  5. using namespace std;
  6. #define all(mask) mask.begin(), mask.end()
  7. typedef long long ll;
  8. typedef pair<ll, ll> pll;
  9. typedef pair<int, int> pii;
  10. typedef long double ld;
  11. struct dsu {
  12.     vector<int> p, siz;
  13.     dsu(int n) {
  14.         p.resize(n), siz.resize(n);
  15.         for (int i = 0; i < n; i++) {
  16.             p[i] = i;
  17.             siz[i] = 1;
  18.         }
  19.     }
  20.     int find(int v) {
  21.         if (v == p[v]) {
  22.             return v;
  23.         }
  24.         return p[v] = find(p[v]);
  25.     }
  26.     void union_set(int a, int b) {
  27.         a = find(a);
  28.         b = find(b);
  29.         if (a == b) {
  30.             return;
  31.         }
  32.         else {
  33.             if (siz[a] < siz[b]) {
  34.                 swap(a, b);
  35.             }
  36.             p[b] = a;
  37.             siz[a] += siz[b];
  38.         }
  39.     }
  40. };
  41. signed main() {
  42. #ifdef _DEBUG
  43.     freopen("input.txt", "r", stdin);
  44.     freopen("output.txt", "w", stdout);
  45. #endif
  46.     ios_base::sync_with_stdio(false);
  47.     cin.tie(nullptr);
  48.     cout.tie(nullptr);
  49.     int n, m;
  50.     cin >> n >> m;
  51.     dsu U(n);
  52.     int cnt = 0, ans = 0;
  53.     bool fl = false;
  54.     if (n == 1)fl = true;
  55.     for (int i = 0; i < m; i++) {
  56.         int a, b;
  57.         cin >> a >> b;
  58.         a--, b--;
  59.         if (U.find(a) != U.find(b)) {
  60.             cnt++;
  61.             U.union_set(a, b);
  62.         }
  63.         if (!fl && cnt == n - 1) {
  64.             ans = i + 1;
  65.             fl = true;
  66.         }
  67.     }
  68.     cout << ans << '\n';
  69. }
Add Comment
Please, Sign In to add comment