Advertisement
YEZAELP

o58_oct_c2_restaurant

Jun 12th, 2021
1,026
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int N = 3e2;
  5. using pi = pair <int, int>;
  6. using pii = pair <int, pi>;
  7. int n, t, mx, node;
  8. vector <pii> edge;
  9. int deg[N+10];
  10. int parent[N+10];
  11.  
  12. int root(int u){
  13.     if(parent[u] == u) return u;
  14.     return parent[u] = root(parent[u]);
  15. }
  16.  
  17. void mrg(int u, int v){
  18.     u = root(u);
  19.     v = root(v);
  20.     parent[v] = u;
  21. }
  22.  
  23. int main(){
  24.  
  25.     scanf("%d%d", &n, &t);
  26.  
  27.     for(int i=1;i<=n;i++){
  28.         int w;
  29.         for(int j=1;j<=i;j++) scanf("%d", &w);
  30.         for(int j=i+1;j<=n;j++){
  31.             scanf("%d", &w);
  32.             edge.push_back({w , {i, j} });
  33.         }
  34.         parent[i] = i;
  35.     }
  36.  
  37.     sort(edge.begin(), edge.end());
  38.  
  39.     for(auto e: edge){
  40.         int u = e.second.first;
  41.         int v = e.second.second;
  42.         if(root(u) == root(v)) continue;
  43.         mrg(u, v);
  44.         deg[u] ++;
  45.         deg[v] ++;
  46.     }
  47.  
  48.     for(int i=1;i<=n;i++){
  49.         if(deg[i] >= 3){
  50.             if(t == 1) printf("%d", i);
  51.             else printf("%d\n%d", i, deg[i]);
  52.             return 0;
  53.         }
  54.     }
  55.  
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement