답안 #86683

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
86683 2018-11-27T06:04:21 Z dimash241 Potemkin cycle (CEOI15_indcyc) C++17
30 / 100
36 ms 14300 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];
 
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 (i, 1, m) {
    	for (auto l : g[x[i]]) {
    		if (l == y[i]) continue;
    		for (auto r : g[y[i]]) {
    			if (r == x[i]) continue;
    			if (!has[l][y[i]] && !has[r][x[i]] && has[l][r]) {
    				cout << l << ' ' << x[i] << ' ' << y[i] << ' ' << r;
    				exit(0);
    			}
    		}
    	}
    }
 
    


 
    	for (int i = 1; i <= n; i ++) {
    		random_shuffle(every(g[i])), u[i] = 0;
    		for (int it = 0; it <= 18; it ++)
    			pr[i][it] = 0;
    	}
 
    	queue < int > q;
    	u[1] = 1;
    	q.push(1);
 
    	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;
    					while (v != x) {
    						st.pb(v);
    						v = pr[v][0];
    					}
    					st.pb(x);
    					reverse(every(st));
    					while (to != x) {
    						st.pb(to);
    						to = pr[to][0];
    					}
    					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
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 504 KB Output is correct
3 Correct 3 ms 704 KB Output is correct
4 Correct 2 ms 704 KB Output is correct
5 Correct 2 ms 704 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 704 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 704 KB Output is correct
2 Incorrect 2 ms 708 KB Wrong answer on graph without induced cycle
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 1104 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 1104 KB Wrong adjacency
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 9 ms 2284 KB Wrong answer on graph without induced cycle
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 20 ms 2284 KB Wrong adjacency
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 32 ms 13804 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 36 ms 14300 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 19 ms 14300 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -