Submission #1004201

#TimeUsernameProblemLanguageResultExecution timeMemory
1004201hacizadalRailway (BOI17_railway)C++17
0 / 100
1079 ms34172 KiB
/* :) */
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define ll long long
#define pll pair<ll, ll>
const int sz = 1e5+5;
vector<ll>g[sz];
ll used[sz], par[sz], a[sz];
map<pll, ll>mp, ans;

void dfs(ll v)
{
    used[v] = 1;
    for (auto u : g[v]){
        if (used[u] == 0){
            par[u] = v;
            dfs(u);
        }
    }
}

int main()
{
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    ll n, m, k, f;
    cin>>n>>m>>k;
    for (ll i = 1; i<=n-1; i++){
        ll u, v;
        cin>>u>>v;
        ans[{u, v}] = ans[{v, u}] = i;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    while (m--){
        cin>>f;
        for (ll i = 1; i<=f; i++){
            cin>>a[i];
        }
        set<pll>s;
        for (ll i = 1; i<=f; i++){
            dfs(a[i]);
            for (ll j = i+1; j<=f; j++){
                ll x = a[i], y = a[j];
                while (par[y] != x){
                    if (y > par[y]) s.insert({par[y], y});
                    else            s.insert({y, par[y]});
                    y = par[y];
                }
                if (y > par[y]) s.insert({par[y], y});
                else            s.insert({y, par[y]});
            }
            for (ll j = 1; j<=n; j++){
                par[j] = used[j] = 0;
            }
        }
        for (auto i : s){
            mp[{i.first, i.second}]++;
        }
        s.clear();
        for (ll i = 1; i<=n; i++){
            par[i] = used[i] = 0;
        }
    }
    vector<ll>v;
    for (auto i : mp){
        if (i.second >= k){
            v.push_back(ans[{i.first.first, i.first.second}]);
        }
        //cout<<i.first.first<<' '<<i.first.second<<endl;
    }
    cout<<v.size()<<endl;
    for (ll i = 0; i<v.size(); i++){
        cout<<v[i]<<' ';
    }
}

Compilation message (stderr)

railway.cpp: In function 'int main()':
railway.cpp:73:21: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   73 |     for (ll i = 0; i<v.size(); 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...