Submission #1204860

#TimeUsernameProblemLanguageResultExecution timeMemory
1204860badge881Praktični (COCI18_prakticni)C++20
130 / 130
78 ms15552 KiB
#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 5;

int n, m;
int s[N], t[N], w[N], d[N], cyc[N];
vector<int> vec, g[N];
bool check[N];

void dfs(int u, int p)
{
    check[u] = true;
    for (int first : g[u])
    {
        int v = u ^ s[first] ^ t[first];
        if (v == p)
            continue;
        if (check[v])
            vec.emplace_back(first), cyc[first] = d[v] ^ d[u] ^ w[first];
        else
            d[v] = d[u] ^ w[first], dfs(v, u);
    }
}
int32_t main()
{

    scanf("%d%d\n", &n, &m);
    for (int i = 1; i <= m; ++i)
    {
        scanf("%d%d%d\n", &s[i], &t[i], &w[i]);
        g[s[i]].emplace_back(i);
        g[t[i]].emplace_back(i);
    }
    dfs(1, 0);
    vector<pair<int, vector<int>>> ans;
    for (int i = 0; i < 30; ++i)
    {
        int val = 0;
        for (int v : vec)
            if (cyc[v] >> i & 1)
                val = cyc[v];
        if (!val)
            continue;
        vector<int> ret;
        for (int v : vec)
            if (cyc[v] >> i & 1)
            {
                ret.emplace_back(v);
                cyc[v] ^= val;
            }
        ans.emplace_back(val, ret);
    }
    printf("%d\n", ans.size());
    for (auto z : ans)
    {
        printf("%d %d ", z.first, z.second.size());
        for (int v : z.second)
            printf("%d ", v);
        printf("\n");
    }

    return 0;
}

Compilation message (stderr)

parkticni.cpp: In function 'int32_t main()':
parkticni.cpp:54:14: warning: format '%d' expects argument of type 'int', but argument 2 has type 'std::vector<std::pair<int, std::vector<int> > >::size_type' {aka 'long unsigned int'} [-Wformat=]
   54 |     printf("%d\n", ans.size());
      |             ~^     ~~~~~~~~~~
      |              |             |
      |              int           std::vector<std::pair<int, std::vector<int> > >::size_type {aka long unsigned int}
      |             %ld
parkticni.cpp:57:21: warning: format '%d' expects argument of type 'int', but argument 3 has type 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wformat=]
   57 |         printf("%d %d ", z.first, z.second.size());
      |                    ~^             ~~~~~~~~~~~~~~~
      |                     |                          |
      |                     int                        std::vector<int>::size_type {aka long unsigned int}
      |                    %ld
parkticni.cpp:28:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   28 |     scanf("%d%d\n", &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~~~
parkticni.cpp:31:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |         scanf("%d%d%d\n", &s[i], &t[i], &w[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...