제출 #1228239

#제출 시각아이디문제언어결과실행 시간메모리
1228239LudisseyConnecting Supertrees (IOI20_supertrees)C++20
11 / 100
111 ms22104 KiB
#include "supertrees.h"
#include <bits/stdc++.h>
 
using namespace std;
 
#define all(a) (a.begin(), a.end())
#define sz(a) (int)a.size()

int n;

int construct(std::vector<std::vector<int>> p) {
	n=sz(p);
	vector<vector<int>> groups;
	vector<int> id(n);
	for (int i = 0; i < n; i++)
	{
		int g=-1;
		for (int j = 0; j < i; j++)
		{
			if(p[i][j]>=1) {
				if(g>-1&&id[j]!=g) return 0;
				g=id[j]; 
			}
		}
		if(g==-1) { groups.push_back({i}); id[i]=sz(groups)-1; }
		else groups[g].push_back(i);
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			if(p[i][j]!=(int)(id[i]==id[j])) return 0;
		}
	}
	vector<vector<int>> bridge(n,vector<int>(n));
	for (int i = 0; i < sz(groups); i++)
	{
		for (int j = 1; j < sz(groups[i]); j++)
		{
			bridge[groups[i][j-1]][groups[i][j]]=bridge[groups[i][j]][groups[i][j-1]]=1;
		}
	}
	build(bridge);		
	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...