Submission #456148

#TimeUsernameProblemLanguageResultExecution timeMemory
456148BT21tataConnecting Supertrees (IOI20_supertrees)C++17
21 / 100
415 ms22188 KiB
#include "supertrees.h"
#include<bits/stdc++.h>

using namespace std;

bool used[1005];

int construct(vector<vector<int>> p)
{
	int n = p.size(), mx=0;
	bool f=1;
	vector<vector<int>> ans;
	ans.resize(n);
	for (int i = 0; i < n; i++)
	{
		ans[i].resize(n);
		for(int j=0; j<n; j++)
			mx=max(mx, p[i][j]);
	}
	if(mx==2)
		for(int i=0; i<n; i++)
			p[i][i]=2;
	vector<int>v;
	for(int i=0; i<n; i++)
	{
		if(!used[i])
		{
			v.clear();
			for(int j=0; j<n; j++)
				if(p[i][j])
				{
					if(p[i]==p[j]) v.push_back(j);
					else f=0;
				}
			for(int j=0; j<(int)v.size()-1; j++)
				ans[v[j]][v[j+1]]=ans[v[j+1]][v[j]]=1;
			if(mx==2 and v.size()==2) f=0;
			if(mx==2) ans[v[0]][v[v.size()-1]]=ans[v[v.size()-1]][v[0]]=1;
		}
	}
	if(!f) return 0;
	build(ans);
	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...