Submission #1348943

#TimeUsernameProblemLanguageResultExecution timeMemory
1348943edga1Tour (BOI25_tou)C++20
Compilation error
0 ms0 KiB
//saving for later
#include <bits/stdc++.h>
#define FIO ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll long long
#define pb push_back
#define fi first
#define se second
using namespace std;

const int N=1000005;
int s[N],cs[N];
pair<int,int> l[N];
vector<array<int,7>> g[N];
vector<int> atb;
set<int> ap[N];
int f=0,beg;

void dfs(int v, pair<int,int> pc){
    s[v]=1;
    cs[v]=1;
    for(auto au : g[v]){
        int u=au[0],c1=au[1],c2=au[2],c3=au[3];
        if(s[u]){
            if(!cs[u]) continue;
            pair<int,int> lc=l[u];
            if(lc.fi==c1 && lc.se==-1 && c2==-1) ap[u].insert(c1);
            else{
                f=1;
                atb.clear();
                atb.pb(u);
                atb.pb(v);
                beg=u;
                break;
            }
        }
        else{
            pair<int,int> curc;
            if((pc.fi==-1 && pc.se==-1) || pc.se!=-1){
                if(c3!=-1) curc={-1,-1};
                else curc={c1,c2};
            }else{
                int prec=pc.fi;
                if(c1==prec) c1=-1;
                if(c2==prec) c2=-1;
                if(c3==prec) c3=-1;
                if(c3>c2) swap(c2,c3);
                if(c2>c1) swap(c1,c2);
                if(c3>c2) swap(c2,c3);
                if(c3!=-1) curc={-1,-1};
                else curc={c1,c2};
            }
            l[v]=curc;
            dfs(u,curc);
            if(f){
                if(beg!=-1) atb.pb(v);
                if(beg==v) beg=-1;
                break;
            }
        }
    }
    cs[v]=0;
    return;
}

void solve(){
    int n,m;
    cin>>n>>m;
    for(int i=1; i<=n; i++){
        s[i]=0;
        g[i].clear();
        ap[i].clear();
    }
    f=0;
    vector<array<int,4>> temp(m);
    for(int i=0; i<m; i++){
        int x,y,c;
        cin>>x>>y>>c;
        temp[i]={x,y,c,i+1};
    }
    sort(temp.begin(),temp.end());
    vector<array<int,4>> temp2;
    temp2.pb(temp[0]);
    for(int i=1; i<m; i++){
        if(temp[i]!=temp[i-1]) temp2.pb(temp[i]);
    }
    for(int i=0; i<temp2.size(); i++){
        if(i==m-1){
            g[temp2[i][0]].pb({temp2[i][1],temp2[i][2],-1,-1,temp2[i][3],-1,-1});
            continue;
        }
        int l=i,r=l+1;
        while(temp2[l][0]==temp2[r][0] && temp2[l][1]==temp2[r][1]){
            r++;
            if(r==m) break;
        }
        r--;
        array<int,7> road={temp2[l][1],temp2[l][2],-1,-1,temp2[l][3],-1,-1};
        if(r>l){
            road[2]=temp2[l+1][2];
            road[5]=temp2[l+1][3];
        }
        if(r>l+1){
            road[3]=temp2[l+2][2];
            road[6]=temp2[l+2][3];
        }
        g[temp2[l][0]].pb(road);
        i=r;
    }
    for(int i=1; i<=n; i++){
        if(!s[i]) dfs(i,{-1,-1});
        if(f){
            cout<<"YES\n"<<atb.size()-1<<' ';\
            vector<array<int,7>> v;
            for(int j=atb.size()-1; j>0; j--){
                int v=atb[i],u=atb[i-1];
                for(auto au : g[v]){
                    if(au[0]==u) v.pb(au);
                }
            }
            
            for(int j=atb.size()-1; j>=0; j--) cout<<atb[j]<<' ';
            cout<<'\n';
            break;
        }
    }
    for(int i=1; i<=n; i++){
        if(ap[i].size()>1){
            cout<<'a'<<i<<'\n';
        }
    }
    if(!f) cout<<"NO\n";
    return;
}

int main(){
    FIO
    int tc; cin>>tc;
    while(tc--){
        solve();
    }
    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'void solve()':
Main.cpp:5:12: error: request for member 'push_back' in 'v', which is of non-class type 'int'
    5 | #define pb push_back
      |            ^~~~~~~~~
Main.cpp:117:36: note: in expansion of macro 'pb'
  117 |                     if(au[0]==u) v.pb(au);
      |                                    ^~