Submission #585988

#TimeUsernameProblemLanguageResultExecution timeMemory
585988serizeConnecting Supertrees (IOI20_supertrees)C++17
11 / 100
184 ms27928 KiB
    #include "supertrees.h"
    #include<bits/stdc++.h>
     
    using namespace std;
     
    const int MAX = 1002;
     
    int link[MAX];
     
    inline int seek(int x){
        if(x == link[x]) return x;
        return link[x] = seek(link[x]);
    }
     
    int construct(std::vector<std::vector<int>> p) {
    	int n = p.size();
    	std::vector<std::vector<int>> answer;
    	for(int i = 0; i < n; i++) link[i] = i;
     
    	int f = 0;
    	for(auto i: p){
            int a = seek(f);
            for(int j = 0; j < n; j++){
                if(i[j] == 1){
                    int b = seek(j);
                    link[b] = a;
                }
            }
            f++;
    	}
  
    	vector<int> cc[MAX];
    	for(int i = 0; i < n; i++){
            cc[ link[i]  ].push_back(i);
    	}
    	int mat[n+1][n+1];
    	memset(mat,0,sizeof(mat));
    	for(int i = 0; i < n; i++){
            int sz = (int)(cc[i].size());
            for(int j = 0; j < sz-1; j++){
                mat[ cc[i][j] ][ cc[i][j+1]  ] = 1;
                mat[ cc[i][j+1] ][ cc[i][j]  ] = 1;
            }
    	}
     	for(int i = 0; i < n; i++){
            vector<int> asd;
            for(int j = 0; j < n; j++){
                asd.push_back(mat[i][j]);
            }
            answer.push_back(asd);
    	}
     
    	build(answer);
    	return 1;
    }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...