Submission #1365827

#TimeUsernameProblemLanguageResultExecution timeMemory
1365827talyTour (BOI25_tou)C++20
9 / 100
437 ms1114112 KiB
#include <bits/stdc++.h>
#define pii pair<int, int>
#define ff first
#define ss second
#define int long long
#define pb push_back
using namespace std;
int n, m;
vector<vector<tuple<int, int, int>>> viz;
vector<vector<int>> marc;
vector<int> ordem;

bool dfs(int v, int ant, int prim, int vp, int i){
    if(v==vp&&ant!=prim){
    ordem.push_back(i);
    return 1;
    }
    if(marc[v][ant])return 0;
    ordem.push_back(i);
    marc[v][ant]=1;
    for(auto [u, w, id]:viz[v]){
        if(w!=ant){
            if(dfs(u, w, prim, vp, id))return 1;
        }
    }
    ordem.pop_back();
    return 0;
}

void solve(){
    cin >> n >> m;
    viz.assign(n, {});
    vector<pii> arestas(m);
    vector<int> pesos(m);
    for(int i=0; i<m; i++){
        int a, b, c; cin>> a >> b >> c;
        a--; b--;
        viz[a].pb({b, c, i});
        pesos[i]=c;
        arestas[i]={a, b};
    }
    for(int i=0; i<m; i++){
        marc.assign(n, vector<int>(m, 0));
        ordem ={};
        if(dfs(arestas[i].ss, pesos[i], pesos[i], arestas[i].ff, i)){
            cout << "YES"<<endl;
            cout << ordem.size()<<" ";
            for(int j:ordem){
                cout << j+1<<" ";
            }
            cout << endl;
            return;
        }
    }
    cout << "NO"<<endl;
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int t; cin >> t;
    while(t--){
        solve();
    }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...