Submission #1348950

#TimeUsernameProblemLanguageResultExecution timeMemory
1348950edga1Tour (BOI25_tou)C++20
32 / 100
2109 ms542680 KiB
#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=50005;
vector<int> g[N];
vector<int> atb;
int s[N],cs[N];
int f=0,beg;

void dfs(int v){
    s[v]=1;
    cs[v]=1;
    for(auto u : g[v]){
        if(s[u]){
            if(!cs[u]) continue;
            f=1;
            beg=u;
            atb.pb(v);
            break;
        }
        dfs(u);
        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<=m; i++){
        s[i]=0;
        g[i].clear();
    }
    vector<array<int,4>> edge(m);
    for(int i=0; i<m; i++){
        int x,y,c;
        cin>>x>>y>>c;
        edge[i]={x,y,c};
    }
    for(int i=0; i<m; i++){
        for(int j=0; j<m; j++){
            if(j==i) continue;
            if(edge[i][1]==edge[j][0] && edge[i][2]!=edge[j][2]){
                g[i+1].pb(j+1);
            }
        }
    }
    f=0;
    atb.clear();
    for(int i=1; i<=m; i++){
        if(!s[i]) dfs(i);
        if(f) break;
    }
    if(f){
        cout<<"YES\n"<<atb.size()<<' ';
        for(int i=atb.size()-1; i>=0; i--) cout<<atb[i]<<' ';
        cout<<'\n';
    }else cout<<"NO\n";
    return;
}

int main(){
    FIO
    int tc; cin>>tc;
    while(tc--){
        solve();
    }
    return 0;
}
#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...