Submission #315332

#TimeUsernameProblemLanguageResultExecution timeMemory
315332shivensinha4Potemkin cycle (CEOI15_indcyc)C++17
70 / 100
1093 ms2560 KiB
#include <bits/stdc++.h> 
using namespace std; 
#define for_(i, s, e) for (int i = s; i < (int) e; i++)
#define for__(i, s, e) for (ll i = s; i < e; i++)
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> ii;
#define endl '\n'

const int MXN = 1000;
vi adj[MXN+1];
bool isAdj[MXN+1][MXN+1];
int pre[MXN+1];

int main() {
	#ifdef shiven
	freopen("test.in", "r", stdin);
	#endif
	
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	
	int n, m; cin >> n >> m;
	for_(i, 0, m) {
		int a, b; cin >> a >> b;
		a -= 1; b -= 1;
		adj[a].push_back(b); adj[b].push_back(a);
		isAdj[a][b] = isAdj[b][a] = true;
	}
	
	vi ans;
	for_(p, 0, n) {
		for (int a: adj[p]) {
			memset(pre, -1, sizeof(pre));
			pre[a] = a;
			queue<int> q;
			q.push(a);
			while (q.size()) {
				int pp = q.front(); q.pop();
				for (auto i: adj[pp]) if (i != p and pre[i] == -1) {
					pre[i] = pp;
					if (isAdj[i][p] and !isAdj[i][a]) {
						int b = i;
						ans.push_back(b);
						while (b != a) ans.push_back(b = pre[b]);
						ans.push_back(p);
						for (int i: ans) cout << i+1 << " ";
						cout << endl;
						return 0;
					}
					
					if (!isAdj[i][p]) q.push(i);
				}
			}
		}
	}
	
	cout << "no" << 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...