Submission #230519

# Submission time Handle Problem Language Result Execution time Memory
230519 2020-05-10T09:53:51 Z Vimmer Praktični (COCI18_prakticni) C++14
0 / 130
76 ms 8820 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];

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

vector <vector <int> > vr;

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

    mk[v] = 1;

    for (auto it : g[v])
    {
        if (!mk[it.S]) dfs(it.S);

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

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

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

    vr.back().pb(v);

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

        rec(it.S);
    }
}
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;

    int t = 0;

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

        cin >> x >> y >> p;

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

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

        t ^= p;
    }

    dfs(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]) continue;

            ans.pb(it.F);

            break;
        }
    }

    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 32 ms 5496 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 16 ms 3968 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 34 ms 5880 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 65 ms 8444 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 49 ms 6776 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 46 ms 6264 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 67 ms 8308 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 74 ms 8820 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 25 ms 4728 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 76 ms 8656 KB There is a simple cycle which is not good
2 Halted 0 ms 0 KB -