답안 #402732

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
402732 2021-05-12T10:00:17 Z Cantfindme 악어의 지하 도시 (IOI11_crocodile) C++17
89 / 100
580 ms 73780 KB
#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pi;
#define f first
#define s second
#define FAST ios_base::sync_with_stdio(0); cin.tie(0);
#define all(x) x.begin(),x.end()

const ll maxn = 100010;

ll state[maxn];
ll dist[maxn], distreal[maxn];
vector <pi> adjlist[maxn];
ll n, e;

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) {
	n = N; e = M;
	
	for (ll i =0;i<e;i++) {
		ll a = R[i][0], b = R[i][1], c = L[i];
		adjlist[a].push_back(pi(b,c));
		adjlist[b].push_back(pi(a,c));
	}
	
	priority_queue <pi, vector<pi>, greater<pi>> pq;
	memset(dist,-1,sizeof dist);
	memset(distreal,-1,sizeof distreal);
	
	for (ll i =0;i<K;i++) {
		pq.push(pi(0, P[i]));
		distreal[P[i]] = 0;
		state[P[i]] = 2;
	}
	
	while (!pq.empty()) {
		auto [d,x] = pq.top(); pq.pop();
		if (d != distreal[x]) continue;
		
		for (auto [i,c] : adjlist[x]) {
			if (state[i] == 0) {
				state[i] = 1;
				dist[i] = c + d;
			} else if (state[i] == 1) {
				if (distreal[i] == -1 or distreal[i] > c + d) {
					distreal[i] = c + d;
					if (distreal[i] < dist[i]) swap(dist[i],distreal[i]);
										
					pq.push(pi(distreal[i],i));
				}
			}
		}
	}
	
	return distreal[0];
}


# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 4172 KB Output is correct
2 Correct 3 ms 4172 KB Output is correct
3 Correct 3 ms 4172 KB Output is correct
4 Correct 4 ms 4256 KB Output is correct
5 Correct 4 ms 4300 KB Output is correct
6 Correct 3 ms 4300 KB Output is correct
7 Correct 3 ms 4300 KB Output is correct
8 Correct 3 ms 4300 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 4172 KB Output is correct
2 Correct 3 ms 4172 KB Output is correct
3 Correct 3 ms 4172 KB Output is correct
4 Correct 4 ms 4256 KB Output is correct
5 Correct 4 ms 4300 KB Output is correct
6 Correct 3 ms 4300 KB Output is correct
7 Correct 3 ms 4300 KB Output is correct
8 Correct 3 ms 4300 KB Output is correct
9 Correct 5 ms 4556 KB Output is correct
10 Correct 3 ms 4172 KB Output is correct
11 Correct 4 ms 4300 KB Output is correct
12 Correct 7 ms 4956 KB Output is correct
13 Correct 6 ms 4900 KB Output is correct
14 Correct 3 ms 4172 KB Output is correct
15 Correct 4 ms 4300 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 4172 KB Output is correct
2 Correct 3 ms 4172 KB Output is correct
3 Correct 3 ms 4172 KB Output is correct
4 Correct 4 ms 4256 KB Output is correct
5 Correct 4 ms 4300 KB Output is correct
6 Correct 3 ms 4300 KB Output is correct
7 Correct 3 ms 4300 KB Output is correct
8 Correct 3 ms 4300 KB Output is correct
9 Correct 5 ms 4556 KB Output is correct
10 Correct 3 ms 4172 KB Output is correct
11 Correct 4 ms 4300 KB Output is correct
12 Correct 7 ms 4956 KB Output is correct
13 Correct 6 ms 4900 KB Output is correct
14 Correct 3 ms 4172 KB Output is correct
15 Correct 4 ms 4300 KB Output is correct
16 Correct 471 ms 67980 KB Output is correct
17 Correct 88 ms 15116 KB Output is correct
18 Correct 104 ms 17412 KB Output is correct
19 Correct 580 ms 73780 KB Output is correct
20 Correct 340 ms 56592 KB Output is correct
21 Correct 42 ms 9564 KB Output is correct
22 Incorrect 322 ms 51140 KB Output isn't correct