Submission #230544

# Submission time Handle Problem Language Result Execution time Memory
230544 2020-05-10T10:38:52 Z Vimmer Praktični (COCI18_prakticni) C++14
0 / 130
102 ms 12308 KB
#include <bits/stdc++.h>

//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>

//#pragma GCC optimize("unroll-loops")
//#pragma GCC optimize("-O3")
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("fast-math")
//#pragma GCC optimize("no-stack-protector")

#define F first
#define S second
#define sz(x) int(x.size())
#define pb push_back
#define N 100005
#define MOD ll(998244353)

using namespace std;

//using namespace __gnu_pbds;

typedef long double ld;
typedef long long ll;

typedef short int si;

//typedef tree <int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;


vector <pair <int, int> > g[N];

bool mk[N], mkr[N], fnd;

int in[N], f[N], id, t, p[N];

vector <vector <int> > vr;

vector <pair <int, int> > path;

int idr[N];

void dfs(int v, int p)
{
    f[v] = in[v] = ++id;

    mk[v] = 1;

    for (auto it : g[v])
    {
        if (it.S == p) continue;

        if (!mk[it.S]) {dfs(it.S, v);

        f[v] = min(f[v], f[it.S]);

        if (f[it.S] > in[v]) mkr[it.F] = 1;}
        else f[v] = min(f[v], f[it.S]);

    }
}

void rec(int v)
{
    mk[v] = 1;

    vr.back().pb(v);

    idr[v] = sz(vr);

    for (auto it : g[v])
    {
        if (mk[it.S] || mkr[it.F]) continue;

        rec(it.S);
    }
}

void dfser(int v, int pr)
{
    mk[v] = 1;

    if (fnd) return;

    for (auto it : g[v])
    {
        if (fnd) break;

        if (it.S == pr) continue;

        if (mk[it.S])
        {
            t = p[it.F];

            fnd = 1;

            while (sz(path) > 0 && path.back().S != it.S)
            {
                t ^= p[path.back().F];

                path.pop_back();
            }
        }

        path.pb({it.F, it.S});

        dfser(it.S, v);

        path.pop_back();
    }

    mk[v] = 0;
}

int main()
{
   // freopen("input.txt", "r", stdin);// freopen("output.txt", "w", stdout);

    ios_base::sync_with_stdio(0); istream::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int n, m;

    cin >> n >> m;

    for (int i = 0; i < m; i++)
    {
        int x, y, t;

        cin >> x >> y >> t;

        g[x].pb({i + 1, y});

        g[y].pb({i + 1, x});

        p[i + 1] = t;
    }

    dfs(1, -1);

    memset(mk, 0, sizeof(mk));

    for (int i = 1; i <= n; i++)
    {
        if (mk[i]) continue;

        vr.emplace_back();

        rec(i);
    }

    vector <int> ans; ans.clear();

    for (int i = 0; i < sz(vr); i++)
    {
        if (sz(vr[i]) < 3) continue;

        for (auto it : g[vr[i][0]])
        {
            if (mkr[it.F] || idr[it.S] != i + 1) continue;

            ans.pb(it.F);

            break;
        }

        if (!fnd)
        {
            memset(mk, 0, sizeof(mk));

            dfser(vr[i][0], -1);
        }
    }

    if (sz(ans) == 0) {cout << 0 << endl; exit(0);}

    cout << 1 << endl;

    cout << t << " " << sz(ans) << " ";

    for (auto it : ans) cout << it << " ";
}
# Verdict Execution time Memory Grader output
1 Incorrect 38 ms 6520 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 19 ms 4480 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 52 ms 7260 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 97 ms 12120 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 66 ms 9200 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 50 ms 7640 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 101 ms 11900 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 97 ms 11352 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 28 ms 6332 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 102 ms 12308 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -