답안 #117590

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
117590 2019-06-16T17:56:59 Z KieranHorgan 악어의 지하 도시 (IOI11_crocodile) C++17
0 / 100
21 ms 24576 KB
#include "crocodile.h"
#include <bits/stdc++.h>

using namespace std;
#define endl '\n'
#define ll long long
#define ld double
#define pii pair<int,int>
#define rand() abs((rand()<<15)|rand())
#define randll() abs(((long long)rand()<<30)|rand())

vector<pair<int,int>> AdjList[1000005];
int dist1[100005];
int dist2[100005];

// signed main() {
// 	ios_base::sync_with_stdio(false);
// 	cin.tie(NULL);
// 	long long seed;
// 	asm("rdtsc" : "=A"(seed));
// 	srand(seed);

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) {
	for(int i = 0; i < M; i++) {
		AdjList[R[i][0]].push_back({L[i], R[i][1]});
		AdjList[R[i][1]].push_back({L[i], R[i][0]});
	}

	// int n, m, k;
	// cin >> n >> m >> k;
	// for(int i = 0; i < m; i++) {
		// int u, v, w;
		// cin >> u >> v >> w;
		// AdjList[u].push_back({w,v});
		// AdjList[v].push_back({w,u});
	// }
	// vector<int> destination(k);
	// for(auto &x: destination)
		// cin >> x;
	int n=N;
	int m=M;
	int k=K;
	vector<int> destination(k);
	for(int i = 0; i < M; i++)
		destination.push_back(P[i]);

	memset(dist1, 63, sizeof(dist1));
	memset(dist2, 63, sizeof(dist2));
	priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
	for(auto x: destination) {
		pq.push({0,x});
		dist1[x]=0;
		dist2[x]=0;
	}
	while(!pq.empty()) {
		int u = pq.top().second;
		int w = pq.top().first; pq.pop();
		if(w > dist2[u]) continue;
		// cerr << u << ": " << dist2[u] << endl;
		for(auto v: AdjList[u])
			if(dist2[u]+v.first < dist1[v.second]) {
				// cerr << " " << u << "->" << v.second << endl;
				dist2[v.second] = dist1[v.second];
				dist1[v.second] = dist2[u] + v.first;
				if(dist2[v.second])
					pq.push({dist2[v.second], v.second});
			} else if(dist2[u]+v.first < dist2[v.second]) {
				// cerr << "  " << u << "->" << v.second << endl;
				dist2[v.second] = dist2[u] + v.first;
				pq.push({dist2[v.second], v.second});
			}
	}

	// cout << dist2[0] << endl;
	return dist2[0];
}

Compilation message

crocodile.cpp: In function 'int travel_plan(int, int, int (*)[2], int*, int, int*)':
crocodile.cpp:40:6: warning: unused variable 'n' [-Wunused-variable]
  int n=N;
      ^
crocodile.cpp:41:6: warning: unused variable 'm' [-Wunused-variable]
  int m=M;
      ^
# 결과 실행 시간 메모리 Grader output
1 Incorrect 21 ms 24576 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 21 ms 24576 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 21 ms 24576 KB Output isn't correct
2 Halted 0 ms 0 KB -