Submission #257323

#TimeUsernameProblemLanguageResultExecution timeMemory
257323super_j6Potemkin cycle (CEOI15_indcyc)C++14
60 / 100
224 ms2432 KiB
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
#include <vector>
#include <queue>
using namespace std;
#define endl '\n'
#define ll long long
#define pi pair<int, int>
#define f first
#define s second

const int mxn = 1000;
int n, m;
int p[mxn], r[mxn];
bool a[mxn][mxn];
vector<int> ans;
vector<int> g[mxn];
queue<int> q;

bool bfs(int x){
	memset(r, -1, sizeof(r));	
	p[x] = -1, r[x] = x;
	q.push(x);
	while(!q.empty()){
		int c = q.front();
		q.pop();
		for(int i : g[c]){
			if(!~r[i]){
				p[i] = c, r[i] = c == x ? i : r[c];
				q.push(i);
			}else if(i != p[c] && !a[r[i]][r[c]]){
				for(int j = i; ~j; j = p[j]) ans.push_back(j + 1);
				reverse(ans.begin(), ans.end());
				for(int j = c; j != x; j = p[j]) ans.push_back(j + 1);
				return 1;
			}
		}
	}
	return 0;
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	cin >> n >> m;
	
	for(int i = 0; i < n; i++) a[i][i] = 1;
	for(int i = 0; i < m; i++){
		int u, v;
		cin >> u >> v;
		u--, v--;
		a[u][v] = a[v][u] = 1;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	
	for(int i = 0; i < n; i++) if(bfs(i)) break;
	
	if(!ans.empty()){
		cout << ans[0];
		for(int i = 1; i < ans.size(); i++) cout << " " << ans[i];
		cout << endl;
	}else{
		cout << "no" << endl;
	}

	return 0;
}

Compilation message (stderr)

indcyc.cpp: In function 'int main()':
indcyc.cpp:64:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 1; i < ans.size(); i++) cout << " " << ans[i];
                  ~~^~~~~~~~~~~~
#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...