Submission #216362

# Submission time Handle Problem Language Result Execution time Memory
216362 2020-03-27T08:18:01 Z darkkcyan Potemkin cycle (CEOI15_indcyc) C++14
60 / 100
40 ms 6648 KB
// vim: foldmethod=marker
#include <bits/stdc++.h>
using namespace std;

#define llong long long 
#define len(x) ((int)x.size())
#define rep(i,n) for (int i = -1; ++ i < n; )
#define rep1(i,n) for (int i = 0; i ++ < n; )
#define rand __rand
mt19937 rng(chrono::system_clock::now().time_since_epoch().count());  // or mt19937_64
template<class T = int> T rand(T range = numeric_limits<T>::max()) { return (T)(rng() % range); }

/*{{{*/
#define CONCAT_(x, y) x##y
#define CONCAT(x, y) CONCAT_(x, y)
#ifdef LOCAL_DEBUG   
int debug = 1;
#define DB(...) stringstream CONCAT(ss, __LINE__); CONCAT(ss, __LINE__) << __VA_ARGS__; debug_block CONCAT(dbbl, __LINE__)(CONCAT(ss, __LINE__).str())
#else
int debug = 0;
#define DB(...)
#endif
int __db_level = 0;
#define clog if (debug) cerr << string(__db_level * 2, ' ')
struct debug_block {
    string name;
    debug_block(const string& name_): name(name_) { clog << "{ " << name << endl; ++__db_level; }
    ~debug_block() { --__db_level; clog << "} " << name << endl; }
};
#define deb(...) "[" << #__VA_ARGS__ << "] = [" << __VA_ARGS__ << "]"
#define debln(...)  clog << "[" << #__VA_ARGS__ << "] = [" << __VA_ARGS__ << "]" << endl
#define _ << ", " <<
template<class U, class V>
ostream& operator<<(ostream& out, const pair<U, V>& p) { return out << "(" << p.first _ p.second << ")"; }
template<class A, class B>
ostream& operator<<(ostream& out, const tuple<A, B>& t) { return out << "(" << get<0>(t) _ get<1>(t) << ")"; }
template<class A, class B, class C>
ostream& operator<<(ostream& out, const tuple<A, B, C>& t) { return out << "(" << get<0>(t) _ get<1>(t) _ get<2>(t) << ")"; }
template<class T> ostream& operator<<(ostream& out, const vector<T>& container) { 
    out << "{";
    if (len(container)) out << container[0];
    rep1(i, len(container) - 1) out _ container[i];
    return out << "}";
}
template<class x> vector<typename x::value_type> $v(const x& a) { return vector<typename x::value_type>(a.begin(), a.end()); }
#define ptrtype(x) typename iterator_traits<x>::value_type
template<class u> vector<ptrtype(u)> $v(u a, u b) { return vector<ptrtype(u)>(a, b); }
/*}}}*/
// ACTUAL SOLUTION BELOW ////////////////////////////////////////////////////////////

const int maxn = 1010;
int n, m;
vector<int> gr[maxn];

bool vis[maxn];
int depth[maxn];
struct cmp_node {
    bool operator()(int u, int v) const {
        return depth[u] > depth[v];
    }
};
set<int, cmp_node> back_edges[maxn];

void dfs(int u) {
    vis[u] = 1;
    for (auto v: gr[u]) {
        if (!vis[v]) continue;
        back_edges[u].insert(v);
    }
    
    auto beg = back_edges[u].begin();
    auto end = back_edges[u].end();
    if (len(back_edges[u]) > 1) for (int x = *beg, y = *++beg; beg != end; x = y, y = (++beg == end ? -1 : *beg)) {
        if (back_edges[x].count(y)) continue;
        cout << u << ' ' << x << ' ';
        while (x != y) {
            int prev = -1;
            for (auto nxt: back_edges[x]) {
                if (depth[nxt] < depth[y]) break;
                prev = nxt;
            }
            cout << prev << ' ';
            x = prev;
        }
        exit(0);
    }
    for (auto v: gr[u]) {
        if (vis[v]) continue;
        depth[v] = depth[u] + 1;
        dfs(v);
    }
}

int main(void) {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> n >> m;
    rep(i, m) {
        int u, v; cin >> u >> v;
        gr[u].push_back(v);
        gr[v].push_back(u);
    }
    
    rep1(i, n) if (!vis[i]) dfs(i);
    cout << "no";

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 384 KB Expected integer, but "no" found
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 512 KB Expected integer, but "no" found
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 640 KB Output is correct
2 Correct 6 ms 640 KB Output is correct
3 Correct 7 ms 768 KB Output is correct
4 Correct 6 ms 768 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 640 KB Expected integer, but "no" found
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 17 ms 2688 KB Output is correct
2 Correct 10 ms 1408 KB Output is correct
3 Correct 22 ms 3712 KB Output is correct
4 Correct 14 ms 1912 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 13 ms 1792 KB Expected integer, but "no" found
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 26 ms 3328 KB Output is correct
2 Correct 40 ms 6648 KB Output is correct
3 Correct 31 ms 4728 KB Output is correct
4 Correct 31 ms 4728 KB Output is correct