Submission #375632

# Submission time Handle Problem Language Result Execution time Memory
375632 2021-03-09T15:52:09 Z Kalashnikov Magenta (COCI21_magenta) C++17
0 / 110
160 ms 16108 KB
#include <bits/stdc++.h>
 
#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout)
#define all(a) a.begin() , a.end()
#define F first
#define S second
 
using namespace std;
using ll = long long;
 
const int N = 2e5+5 , inf = 2e9 + 7;
const ll INF = 1e18 ,   mod = 1e9+7 , P = 6547;

int u[N] , jeski[N][2] , d[N];
vector<pair<int,string>> g[N];

void solve() {
	int n , dist;
	cin >> n;
	int a , b;
	cin >> a >> b;
	for(int i = 1; i < n; i ++) {
		int a , b;
		cin >> a >> b;
		string s;
		cin >> s;
		g[a].push_back({b , s});
		g[b].push_back({a , s});
	}
	const string rail[2] = {"plava" , "crvena"};
	queue<int> q[2];
	q[0].push(a);
	q[1].push(b);
	int canDraw[2];
	u[a] = 1;
	u[b] = 2;
	while(q[0].size() + q[1].size()) {
		for(int t = 0; t < 2; t ++) {
			if(q[t].empty()) continue;
			int cur = q[t].front();
			q[t].pop();
			for(auto to: g[cur]) {
				if(u[to.F] == 0 && (to.S == rail[t] || to.S == "magenta") ) {
					if(jeski[cur][t]) {
						canDraw[t] = 1;
					}
					if(to.S == rail[t]) {
						jeski[to.F][t] = 1;
					}
					u[to.F] = t+1;
					d[to.F] = d[cur]+1;
					q[t].push(to.F);
				}
				if(u[to.F] != t+1 && u[to.F] != 0) {
					//cout << to.F << ' ' << cur << '\n';
					dist = d[to.F] + d[cur] + 1;
				}
			}
		}
	}
	
//	cout << dist << '\n';
	if(dist % 2 == 1) {
		if(canDraw[0])
			cout << "Magenta";
		else
			cout << "Marin";
	}
	else {
		if(canDraw[1])
			cout << "Magenta";
		else
			cout << "Paula";
	}
}
/*
*/
main() {
	//ios;
    int tt = 1;
    //cin >> tt;
    while(tt --) {
        solve();
    }
    return 0;
}

Compilation message

Main.cpp:79:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   79 | main() {
      |      ^
Main.cpp: In function 'void solve()':
Main.cpp:64:10: warning: 'dist' may be used uninitialized in this function [-Wmaybe-uninitialized]
   64 |  if(dist % 2 == 1) {
      |     ~~~~~^~~
# Verdict Execution time Memory Grader output
1 Incorrect 4 ms 4972 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 160 ms 15980 KB Output is correct
2 Correct 153 ms 16108 KB Output is correct
3 Correct 156 ms 15980 KB Output is correct
4 Incorrect 160 ms 15980 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 4 ms 4972 KB Output isn't correct
2 Halted 0 ms 0 KB -