제출 #1344862

#제출 시각아이디문제언어결과실행 시간메모리
1344862nanaseyuzukiCrocodile's Underground City (IOI11_crocodile)C++20
0 / 100
2100 ms263088 KiB
#include <bits/stdc++.h>
#include "crocodile.h"
#define ll int
#define fi first
#define se second
#define pii pair<ll, ll>
#define all(a) a.begin(), a.end()
using namespace std;

#ifdef LOCAL
#include "C:\Users\Dell\Downloads\template\template\icpc-notebook\Utilities\debug.h"
#else
#define debug(...) 42
#endif

const ll mn = 5e5 + 5, mod = 1e9 + 7, inf = 2e18;

ll n, m, k, p[mn];
vector <pii> a[mn];
pii d[mn];

ll travel_plan(ll N, ll M, ll R[][2], ll L[], ll K, ll P[]) {
	n = N, m = M, k = K;
	for(ll i = 0; i < m; i++) {
		ll u = R[i][0], v = R[i][1], w = L[i];
		a[u].push_back({v, w});
		a[v].push_back({u, w});
	}
	priority_queue <pii, vector <pii>, greater<pii>> pq;
	for(ll i = 1; i <= n; i++) d[i] = {inf, inf};
	
	for(ll i = 0; i < k; i++) {
		p[i] = P[i] + 1;
		d[p[i]] = {0, 0};
		pq.push({0, p[i]});
	}

	while(pq.size()) {
		auto [c, u] = pq.top();
		pq.pop();
		if(c > d[u].se) continue;

		for(auto [v, w] : a[u]) {
			ll nw = c + w;
			if(d[v].fi > nw) {
				d[v].se = d[v].fi;
				d[v].fi = nw;
			}
			else if(d[v].se > nw) d[v].se = nw;
			
			if(d[v].se < inf) pq.push({d[v].se, v});
		}
	}

	return d[1].se;
}

// Don't wanna lose anymore T_T
// Never let me go - Kazuo Ishiguro

컴파일 시 표준 에러 (stderr) 메시지

crocodile.cpp:16:45: warning: overflow in conversion from 'double' to 'int' changes value from '2.0e+18' to '2147483647' [-Woverflow]
   16 | const ll mn = 5e5 + 5, mod = 1e9 + 7, inf = 2e18;
      |                                             ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...