Submission #406019

#TimeUsernameProblemLanguageResultExecution timeMemory
406019Maqsut_03Swapping Cities (APIO20_swap)C++17
13 / 100
140 ms15120 KiB
#include "swap.h"
#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<deque>

#define ll int
#define pl pair<ll, ll> 
#define llv vector<ll>
#define pb push_back
#define ppb(x, y) push_back({x, y})
#define pv vector<pl>
#define sz size()
#define ss second
#define ff first

using namespace std;
const int N = 2 * 1e5 + 3;

bool f = 0, f1 = 1;
pv v;
llv w[N];
int a[N], b, k = 0, q = 0, p = 0;

void init(int N, int M, vector<int> U, vector<int> V, vector<int> W) 
{
	
	for (int i=0; i<M; i++)
	{
		w[V[i]].pb(U[i]);
		w[U[i]].pb(V[i]);
	}
	
	for (int i=0; i<N; i++)
    {
    	if (w[i].sz == 2) q++;
    	if (w[i].sz == 1) p++;
	}
	if (p == 2 && q + p == N) f = 1;
	for (int i=0; i<M; i++) v.ppb(W[i], V[i]);
	sort(v.begin(), v.end());
	b = v[2].ff;
	for (int i=0; i<M; i++) a[V[i]] = W[i];
	
	for (int i=0; i<M; i++)
		k = max(k, W[i]);
	f1 = (N == M);
	return ;
}
int getMinimumFuelCapacity(int X, int Y) 
{
	if (f) return -1;
	if (f1) return k;
	return max({b, a[X], a[Y]});
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...