Submission #225060

#TimeUsernameProblemLanguageResultExecution timeMemory
225060alishahali1382KOVANICE (COI15_kovanice)C++14
100 / 100
342 ms37216 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("O2") #pragma GCC optimize ("unroll-loops") //#pragma GCC optimize("no-stack-protector,fast-math") using namespace std; typedef long long ll; typedef long double ld; typedef pair<int, int> pii; typedef pair<pii, int> piii; typedef pair<ll, ll> pll; #define debug(x) cerr<<#x<<'='<<(x)<<endl; #define debugp(x) cerr<<#x<<"= {"<<(x.first)<<", "<<(x.second)<<"}"<<endl; #define debug2(x, y) cerr<<"{"<<#x<<", "<<#y<<"} = {"<<(x)<<", "<<(y)<<"}"<<endl; #define debugv(v) {cerr<<#v<<" : ";for (auto x:v) cerr<<x<<' ';cerr<<endl;} #define all(x) x.begin(), x.end() #define pb push_back #define kill(x) return cout<<x<<'\n', 0; const ld eps=1e-7; const int inf=1000000010; const ll INF=10000000000000010LL; const int mod=1000000007; const int MAXN=300010, LOG=20; int n, m, k, u, v, x, y, t, a, b, ans; int dp[MAXN], pd[MAXN]; int par[MAXN]; bool mark[MAXN]; vector<int> G[MAXN], GR[MAXN]; vector<pii> E; int get(int x){ if (par[x]==x) return x; return par[x]=get(par[x]); } void dfs1(int node){ mark[node]=1; for (int v:G[node]){ if (!mark[v]) dfs1(v); dp[node]=max(dp[node], dp[v]+1); } } void dfs2(int node){ mark[node]=1; for (int v:GR[node]){ if (!mark[v]) dfs2(v); pd[node]=max(pd[node], pd[v]+1); } } int main(){ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); cin>>n>>m>>k; for (int i=1; i<=m; i++) par[i]=i; while (k--){ char ch; cin>>x>>ch>>y; if (ch=='<') E.pb({x, y}); else par[get(x)]=get(y); } for (pii p:E){ G[get(p.first)].pb(get(p.second)); GR[get(p.second)].pb(get(p.first)); } for (int i=1; i<=m; i++) if (par[i]==i && !mark[i]) dfs1(i); memset(mark, 0, sizeof(mark)); for (int i=1; i<=m; i++) if (par[i]==i && !mark[i]) dfs2(i); for (int i=1; i<=m; i++){ v=get(i); if (dp[v]+pd[v]!=n-1) cout<<"?\n"; else cout<<"K"<<pd[v]+1<<'\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...