Submission #1339757

#TimeUsernameProblemLanguageResultExecution timeMemory
1339757ezzzayTour (BOI25_tou)C++20
0 / 100
1 ms344 KiB
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
const int N=5e4;
vector<int>v[N];
vector<int>rt[N];
bool vis[N];
vector<int>vc;bool FLAG=0;
vector<int>ans;
void dfs(int a, int c){
    if(FLAG)return;
    for(int i: v[a]){
        if(FLAG)return;
        vector<int> nw= rt[i];
        if(vis[i]==0 and nw[2]!=c){
            vis[i]=1;
            vc.pb(i);
            dfs(nw[1],nw[2]); 
            vc.pop_back();
        }
        else if(vis[i] and nw[2]!=c){ 
            while(!vc.empty()){
               ans.pb(vc.back());
               if(vc.back()==i)break;
               vc.pop_back();
            }
            reverse(ans.begin(),ans.end());
            
            FLAG=1;
           
        }
    }
}
void fun(){
    
    int n,m;
    cin>>n>>m;
    FLAG=0;
    ans.clear();
    for(int i=1;i<=n;i++){
        v[i].clear();
    }
    for(int i=1;i<=m;i++){
        rt[i].clear();
    }
    for(int i=1;i<=m;i++){
        vis[i]=0;
        int a,b,c;
        cin>>a>>b>>c;
        v[a].pb(i);
        rt[i]={a,b,c};
    }
    vc.clear();
    dfs(1,0);
    if(FLAG){
        cout<<"YES"<<endl;
        cout<<ans.size()<<" ";
        for(auto a:ans)cout<<a<<" ";
        cout<<endl;
    }
    else{
        cout<<"NO"<<endl;
    }
}
signed main(){
    int t;
    cin>>t;
    while(t--){
        fun();
    }
    
}
#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...