Submission #1149256

#TimeUsernameProblemLanguageResultExecution timeMemory
114925612345678Tug of War (BOI15_tug)C++20
23 / 100
8 ms5352 KiB
#include <bits/stdc++.h>

using namespace std;

const int nx=6e4+5;

int n, k, l[nx], r[nx], s[nx], vs[nx], f;
set<int> deg[nx];

void solve(int x, int idx)
{
    //cout<<"debug "<<x<<' '<<idx<<'\n';
    if (l[x]==idx)
    {
        deg[r[x]].erase(idx);
        if (deg[r[x]].empty()) f=1;
        else if (deg[r[x]].size()==1) solve(*deg[r[x]].begin(), r[x]);
    }
    else
    {
        deg[l[x]].erase(idx);
        if (deg[l[x]].empty()) f=1;
        else if (deg[l[x]].size()==1) solve(*deg[l[x]].begin(), l[x]);
    }
}
int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>k;
    for (int i=1; i<=2*n; i++) cin>>l[i]>>r[i]>>s[i], r[i]+=n, deg[l[i]].insert(i), deg[r[i]].insert(i);
    for (int i=1; i<=2*n; i++) if (deg[i].empty()) return cout<<"NO", 0;
    for (int i=1; i<=2*n; i++) if (deg[i].size()==1&&!f) solve(*deg[i].begin(), i);
    if (f) cout<<"NO";
    else cout<<"YES"; 
}

/*
2 20
1 1 1
1 2 4
2 2 1
2 1 4

*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...