Submission #1325202

#TimeUsernameProblemLanguageResultExecution timeMemory
1325202Ivo_12KOVANICE (COI15_kovanice)C++20
10 / 100
206 ms23120 KiB
#include <bits/stdc++.h>
#define ll long long
#define mp make_pair
#define F first
#define S second
#define pii pair < int, int >
#define pb push_back
#define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)

using namespace std;

const int N = 3e5+10;
string s;
int n, m, v;
vector < pii > adj[N];
int vis[N];
int sol[N];
int dep[N];

pair < pii, int > input( void ) {
	
	cin >> s;
	pair < pii, int > out;
	int temp = 0;
	
	for(int i = 0; i < (int) s.size(); i++) {
		if(s[i] >= '0' && s[i] <= '9') temp = temp*10 + s[i] - '0';
		
		else {
			out.F.F = temp;
			temp = 0;
			
			if(s[i] == '>') out.S = -1;
			if(s[i] == '<') out.S = 1;
			if(s[i] == '=') out.S = 0;
		}
	}
	
	out.F.S = temp;
	
	return out;
}

void dfs( int x, int v ) {
	
	if(vis[x]) return;
	vis[x] = 1;
	dep[x] = 0;
	
	pii sus;
	
	for(int i = 0; i < (int) adj[x].size(); i++) {
		sus = adj[x][i];
		if(sus.S == v) {
			dfs(sus.F, v);
			dep[x] = max(dep[x], dep[sus.F] + 1);
		}
	}
	
	for(int i = 0; i < (int) adj[x].size(); i++) {
		sus = adj[x][i];
		if(sus.S == 0) {
			dfs(sus.F, v);
			dep[x] = max(dep[x], dep[sus.F]);
		}
	}
	
	return;
}

void task( void ) {
	
	cin >> n >> m >> v;
	pair < pii, int > temp;
	
	for(int i = 0; i < v; i++) {
		temp = input();
		adj[--temp.F.F].pb(mp(--temp.F.S, temp.S));
		adj[temp.F.S].pb(mp(temp.F.F, -temp.S));
	}
	
	for(int i = 0; i < m; i++) dfs(i, 1);
	
	for(int i = 0; i < m; i++) {
		vis[i] = 0;
		sol[i] = dep[i];
		dep[i] = 0;
	}
	
	for(int i = 0; i < m; i++) dfs(i, -1);
	
	for(int i = 0; i < m; i++) sol[i] += dep[i];
	
	for(int i = 0; i < m; i++) {
		if(sol[i] == n - 1) cout << "K" << dep[i] + 1 << "\n";
		else cout << "?\n";
	}
	
	return;
}

int main( void ) {
	
	FIO;
	int tt = 1;
	while(tt--) task();
	
	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...