Submission #756169

#TimeUsernameProblemLanguageResultExecution timeMemory
756169TrumlingConnecting Supertrees (IOI20_supertrees)C++14
19 / 100
215 ms27944 KiB
#include "supertrees.h"
#include <bits/stdc++.h>
using namespace std; 

typedef long long ll;
#define pb push_back
#define F first
#define S second
#define enter cout<<'\n';
#define INF 99999999999999999
#define MOD 1000000007
#define all(x) x.begin(),x.end()

vector<bool>vis(1000,0);
vector<vector<int>>g;
vector<vector<int>>ans;
ll nn;
bool dfs(int start,int beg)
{
	vis[start]=1;
	for(int i=0;i<nn;i++)
		if(g[start][i]!=g[beg][i] && i!=start && i!=beg)
			return 0;
		
		

	ll count=0;
	for(int i=0;i<nn;i++)
		if(g[start][i])
		count++;
	
	if(count==2)
	return 0;

	for(int i=0;i<nn;i++)
		if(!vis[i] && g[start][i])
		{
			ans[i][start]=1;
			ans[start][i]=1;
			return dfs(i,beg);
		}
	ans[start][beg]=1;
	ans[beg][start]=1;
	return 1;
}

int construct(vector<vector<int>> pr) 
{
	nn=pr.size();
	g=pr;

	ans.assign(nn,vector<int>(nn,0));

	for(int i=0;i<nn;i++)
	{
		bool now=dfs(i,i);
		if(!now)
		return 0;
	}
	for(int i=0;i<nn;i++)
	ans[i][i]=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...