This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define TRACE(x) cerr << #x << " :: " << x << endl
#define _ << " " <<
#define SZ(x) (int)(x).size()
#define ALL(x) (x).begin(),(x).end()
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define RFOR(i,a,b) for (int i=(a);i>=(b);--i)
using ii = pair<int,int>;
const int mxN = 1e3+5;
const int mxR = 1e5+5;
int N, R;
vector<int> al[mxN];
int dist[mxN], pa[mxN], rt[mxN];
int mnrtd[mxN][mxN];
vector<int> ans;
bool solve(int s) {
memset(dist,-1,sizeof dist);
memset(pa,-1,sizeof pa);
memset(rt,-1,sizeof rt);
queue<int> q;
vector<ii> tmp;
for (int v : al[s]) dist[v] = 1, rt[v] = v, q.push(v);
while (!q.empty()) {
int u = q.front(); q.pop();
for (int v : al[u]) if (v != s) {
if (dist[v] == -1) {
dist[v] = dist[u]+1;
pa[v] = u;
rt[v] = rt[u];
q.push(v);
} else if (rt[v] != rt[u] && mnrtd[rt[u]][rt[v]] == -1) {
mnrtd[rt[u]][rt[v]] = mnrtd[rt[v]][rt[u]] = dist[u]+dist[v]+1;
tmp.emplace_back(u,v);
}
}
}
for (ii x : tmp) {
int u = x.first, v = x.second;
if (mnrtd[rt[u]][rt[v]] >= 4) {
for (int y = u; y != -1; y = pa[y]) ans.push_back(y);
ans.push_back(s);
reverse(ALL(ans));
for (int y = v; y != -1; y = pa[y]) ans.push_back(y);
return true;
}
mnrtd[rt[u]][rt[v]] = mnrtd[rt[v]][rt[u]] = -1;
}
return false;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> N >> R;
FOR(i,1,R){
int A, B; cin >> A >> B;
al[A].push_back(B);
al[B].push_back(A);
}
memset(mnrtd,-1,sizeof mnrtd);
FOR(i,1,N){
if (solve(i)) {
for (int x : ans) {
cout << x << ' ';
}
cout << '\n';
return 0;
}
}
cout << "no" << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |