Submission #1352141

#TimeUsernameProblemLanguageResultExecution timeMemory
1352141po_rag526KOVANICE (COI15_kovanice)C++20
0 / 100
811 ms37512 KiB
#include<bits/stdc++.h>
using namespace std;
#define debug(n,m) cout<<"["<<#n<<"]->"<<n<<m
#define ll long long
#define int long long
#define all(x,off) x.begin()+off,x.end()
#define pb push_back 

const int N=5e5+10;
const ll inf=9e17;
const ll mod=1e9+7;

int a[N],d[N];

int n,m,q;
vector<array<int,2>> v;
vector<array<int,2>> g[N];

void dfs(int u) {
  v.push_back({d[u],u});
  a[u]=1;
  for (auto  [v,w]:g[u]) {
    if (a[v]) continue;
    dfs(v);
  }
} 

void bellman() {
  for (int i=1;i<=m;++i) {
    d[i]=-inf;
  } 
  d[1]=0;
  for (int it=0;it<n;++it) {
    for (int i=1;i<=n;++i) {
      for (auto [to,w]:g[i]) {
        if (d[to]<d[i]+w) d[to]=d[i]+w;
      }
    }
  }
}

void levi() {
  cin>>n>>m>>q;
  vector<int> ans(m+1,-1);
  for (int i=1;i<=q;++i) {
    int a,b;
    char c;
    cin>>a>>c>>b;
    if (c=='<') g[a].pb({b,1}),g[b].pb({a,-1});
    else g[a].pb({b,0}),g[b].pb({a,0});    
  }
  bellman();
  for (int i=1;i<=m;++i) {
    if (!a[i]) {
      v.clear();
      dfs(i);
      sort(begin(v),end(v));
      if (v.back()[0]-v.front()[0]!=n-1) continue;
      for (auto [d,u]:v) {
        ans[u]=d+1-v.front()[0];
      } 
    }
  }
  for (int i=1;i<=m;++i) {
    if (ans[i]==-1) {
      cout<<"?\n";
      continue;
    }
    cout<<"K"<<ans[i]<<'\n';
  }
}

int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);int tt=1;//cin>>tt;
  while (tt--) levi();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...