Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 3e2;
- using pi = pair <int, int>;
- using pii = pair <int, pi>;
- int n, t, mx, node;
- vector <pii> edge;
- int deg[N+10];
- int parent[N+10];
- int root(int u){
- if(parent[u] == u) return u;
- return parent[u] = root(parent[u]);
- }
- void mrg(int u, int v){
- u = root(u);
- v = root(v);
- parent[v] = u;
- }
- int main(){
- scanf("%d%d", &n, &t);
- for(int i=1;i<=n;i++){
- int w;
- for(int j=1;j<=i;j++) scanf("%d", &w);
- for(int j=i+1;j<=n;j++){
- scanf("%d", &w);
- edge.push_back({w , {i, j} });
- }
- parent[i] = i;
- }
- sort(edge.begin(), edge.end());
- for(auto e: edge){
- int u = e.second.first;
- int v = e.second.second;
- if(root(u) == root(v)) continue;
- mrg(u, v);
- deg[u] ++;
- deg[v] ++;
- }
- for(int i=1;i<=n;i++){
- if(deg[i] >= 3){
- if(t == 1) printf("%d", i);
- else printf("%d\n%d", i, deg[i]);
- return 0;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement