Submission #760837

#TimeUsernameProblemLanguageResultExecution timeMemory
760837a_aguiloPotemkin cycle (CEOI15_indcyc)C++14
10 / 100
1081 ms4600 KiB
#include<bits/stdc++.h>

using namespace std;

vector<vector<int>> AdjMatrix;
vector<int> component;
int numNodes, numEdges, N, R;

void outputCompt(int node, int prev, int start){
	cout << node+1 << " ";
	for(int other: component){
		if(other == node) continue;
		if(other == start) continue;
		if(other == prev) continue;
		if(AdjMatrix[node][other] == 0) {
			//cout << node << "-> " << other << endl;
			outputCompt(other, node, start);
			return;
		}
	}
}

int main(){
	int a, b;
	cin >> N >> R;
	AdjMatrix = vector<vector<int>> (N, vector<int>(N, 1));
	int sol = -1;
	int first = -1;
	for(int i = 0; i < R; ++i){
		cin >> a >> b;
		a--; b--;
		AdjMatrix[a][b] = AdjMatrix[b][a] = 0;
	}
	for(int mask = 1; (mask < (1 << N)) and (sol == -1); ++mask){
		numEdges = 0;
		numNodes = __builtin_popcount(mask);
		if(numNodes > 3){
			bool possible = true;
			for(int i = 0; i < N; ++i){
				if(mask & (1 << i)){
					int cnt = 0;
					for(int j = 0; j < N; ++j){
						if(i == j) continue;
						//cout << mask << " " << i <<" " << j << endl;
						if(mask & (1 << j))cnt+= AdjMatrix[i][j];
					}
					if(cnt != numNodes-3) possible = false;
				}
			}
			if(possible) sol = mask;
		}
	}
	if(sol == -1) cout << sol << endl;
	else{
		//cout << sol << endl;
		for(int i = 0; i < N; ++i){
			if(sol & (1 << i)) {
				component.push_back(i);
				//cout << i << endl;
				first = i;
			}
		}
		outputCompt(first, -1, first);
		cout << endl;
	}
	return 0;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...