Submission #86685

# Submission time Handle Problem Language Result Execution time Memory
86685 2018-11-27T06:09:00 Z dimash241 Potemkin cycle (CEOI15_indcyc) C++17
30 / 100
37 ms 14204 KB
# include <stdio.h>
# include <bits/stdc++.h>
 
 
#define _USE_MATH_DEFINES_
#define ll long long
#define ld long double
#define Accepted 0
#define pb push_back
#define mp make_pair
#define sz(x) (int)(x.size())
#define every(x) x.begin(),x.end()
#define F first
#define S second
#define For(i,x,y)  for (ll i = x; i <= y; i ++) 
#define FOr(i,x,y)  for (ll i = x; i >= y; i --)
#define SpeedForce ios_base::sync_with_stdio(0), cin.tie(0)
// ROAD to...                                                                                                                                                                                                                Red
 
using namespace std;
 
inline bool isvowel (char c) {
	c = tolower(c);
    if (c == 'a' || c == 'e' || c == 'i' || c == 'y' || c == 'o' || c == 'u') return 1;
    return 0;
}
 
const double eps = 0.000001;
const ld pi = acos(-1);
const int maxn = 1e7 + 9;
const int mod = 1e9 + 7;
const ll MOD = 1e18 + 9;
const ll INF = 1e18 + 123;
const int inf = 2e9 + 11;
const int mxn = 1e6 + 9;
const int N = 5123;                                          
const int M = 22;
const int pri = 997;
const int Magic = 2101;
 
const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, -1, 0, 1};
 
int n, m, k;
vector < int > g[N];
int x[N], y[N];
int has[5005][5005];
int u[N], pr[N][20];

bool check (vector < int > &s) {
	For (i, 0, sz(s) - 2) {
		For (j, i + 2, sz(s) - 1) {
			if (has[s[i]][s[j]] && i != 0 && j != sz(s) - 1) return 0;
		}
	}
	return 1;
}

 
int lca (int a, int b) {
	if (u[a] < u[b]) swap(a, b);
	for (int i = 18; i >= 0; i --) {
		if (u[pr[a][i]] >= u[b]) a = pr[a][i];
	}
 
	for (int i = 18; i >= 0;i --) {
		if (pr[a][i] != pr[b][i]) {
			a = pr[a][i];
			b = pr[b][i];
		}
	}
	return pr[a][0];
}
 
int main () {               
    cin >> n >> m ;
    For (i, 1, m) {
    	cin >> x[i] >> y[i];
    	g[x[i]].pb(y[i]);
    	g[y[i]].pb(x[i]);
    	has[x[i]][y[i]] = has[y[i]][x[i]] = 1;
    }
 
    


    for (int s = 1; s <= n; s ++) {
    	for (int i = 1; i <= n; i ++) {
    		u[i] = 0;
    		for (int it = 0; it <= 18; it ++)
    			pr[i][it] = 0;
    	}
 
    	queue < int > q;
    	u[s] = 1;
    	q.push(s);
 
    	while (q.size()) {
    		int v = q.front();
    		q.pop();
    		
    		for (auto to : g[v]) {
    			if (u[to] && pr[v][0] != to) {
    				int x = lca(to, v);
    				if (u[v] + u[to] - 2 * u[x] >= 3) {
    					vector < int > st;
    					int so = v;
    					while (so != x) {
    						st.pb(so);
    						so = pr[so][0];
    					}
    					st.pb(x);
    					reverse(every(st));
    					while (to != x) {
    						st.pb(to);
    						to = pr[to][0];
    					}
    					if (check(st)) {
    						for (auto it : st)
    							cout << it << ' ';
    						exit(0);
    					}
    				}
    			}
    			if (!u[to]) {
    				u[to] = u[v] + 1;
    				pr[to][0] = v;
    				for (int i = 1; i <= 18; i ++)
    					pr[to][i] = pr[pr[to][i - 1]][i - 1];
    				q.push(to);
    			}
    		}
    	}
    }
 
    cout << "no";
    return Accepted;
}
 
// Coded By OB
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 3 ms 504 KB Output is correct
3 Correct 2 ms 576 KB Output is correct
4 Correct 3 ms 784 KB Output is correct
5 Correct 2 ms 784 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 784 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 784 KB Wrong adjacency
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 1260 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 4 ms 1260 KB Wrong adjacency
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 2300 KB Wrong answer on graph without induced cycle
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 2300 KB Wrong adjacency
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 30 ms 13820 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 37 ms 14204 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 19 ms 14204 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -