Submission #458048

#TimeUsernameProblemLanguageResultExecution timeMemory
458048MOUF_MAHMALATKOVANICE (COI15_kovanice)C++11
50 / 100
2080 ms17860 KiB
#include<bits/stdc++.h> #define all(s) s.begin(),s.end() using namespace std; typedef int ll; ll n,m,k,a[300009],b[300009]; ll p[300009],sz[300009],d[300009]; vector<vector<ll> >v; char c[300009]; bool is[300009],st[300009]; ll gp(ll z) { if(p[z]==z) return z; return p[z]=gp(p[z]); } void mrg(ll x,ll y) { x=gp(x),y=gp(y); if(x==y) return; if(sz[x]<sz[y]) swap(x,y); p[y]=x,sz[x]+=sz[y]; } void dfs(ll id,ll op) { d[id]=max(d[id],op); op=d[id]; if(d[id]==n) return void(is[id]=1); for(auto z:v[id]) { dfs(z,op+1); is[id]|=is[z]; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m>>k; v.resize(m+1); for(ll i=1; i<=m; i++) p[i]=i,sz[i]=1; for(ll i=1; i<=k; i++) { cin>>a[i]>>c[i]>>b[i]; if(c[i]=='=') mrg(a[i],b[i]); } for(ll i=1; i<=k; i++) { if(c[i]=='=') continue; if(c[i]=='<') v[gp(a[i])].push_back(gp(b[i])),st[gp(b[i])]=1; else v[gp(b[i])].push_back(gp(a[i])),st[gp(a[i])]=1; } for(ll i=1;i<=m;i++) if(st[i]==0&&p[i]==i) dfs(i,1); for(ll i=1;i<=m;i++) { if(is[gp(i)]) cout<<"K"<<d[gp(i)]; else cout<<"?"; cout<<"\n"; } 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...