Submission #390100

#TimeUsernameProblemLanguageResultExecution timeMemory
390100ioiConnecting Supertrees (IOI20_supertrees)C++14
11 / 100
241 ms22092 KiB
#include "supertrees.h"
#include <vector>
#include<bits/stdc++.h>
using namespace std ;
const int N = 10000;

int dsu[N] ;

int findp(int u){
    if(dsu[u] == u)
        return u ;

    return dsu[u] = findp(dsu[u]);

}
void connect(int u , int v){
    u = findp(dsu[u]) , v = findp(dsu[v]);

    if(u == v)return ;


    dsu[u] = v ;



}
int construct(vector<std::vector<int>> p) {
	int n = p.size();
    vector<std::vector<int>> answer;
    //ঠিক সেই ক্ষেত্রে p[i][j] = 1


	for (int i = 0; i < n; i++) {
        dsu[i] = i ;

		vector<int> row (0 , 0);
		row.resize(n);
		answer.push_back(row);
	}

	for(int i = 0 ; i < n - 1; i ++)
        if(p[i][i + 1]){
            answer[i][i + 1] = 1 , answer[i + 1][i] = 1 ;
            connect(i ,i + 1);
        }
    for(int i = 0 ; i < n ; i ++)dsu[i] = findp(dsu[i]);
    
    for(int i = 0 ; i < n ; i ++){
        for(int j = 0 ; j < n ; j ++){
            if(!p[i][j] && dsu[i] == dsu[j])return 0 ;
            
        }
    }
	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...