# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
388917 | 2021-04-13T09:53:29 Z | Killer2501 | 악어의 지하 도시 (IOI11_crocodile) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> #define ll long long #include "crocodile.h" #define pb push_back #define task "asd" #define pll pair<ll, ll> #define pii pair<pll, ll> #define fi first #define se second using namespace std; const ll mod = 1e17+7; const ll N = 1e6+5; const int base = 313; const long double Exp = 1e-8; ll n, m, t, k, T, ans, tong, c[N]; ll a[N], b[N], d[N]; vector<pll> adj[N]; vector<pll> kq; string s; void sol() { cin >> n >> m >> k; for(int i = 1; i <= m; i ++) { ll x, y, z; cin >> x >> y >> z; adj[x].pb({z, y}); adj[y].pb({z, x}); } priority_queue< pll, vector<pll>, greater<pll> > pq; for(int i = 0; i < n; i ++)d[i]= mod; for(int i = 1; i <= k; i ++) { ll x; cin >> x; d[x] = 0; a[x] = 1; pq.push({0, x}); } while(!pq.empty()) { pll u = pq.top(); pq.pop(); if(a[u.se] == 0) { a[u.se] = 1; continue; } if(u.se == 0) { cout << u.fi; return; } for(pll v : adj[u.se]) { pq.push({v.fi+u.fi, v.se}); } } } ll travel_plan(int n, int m, int r[][2], int l[], int k, int p[]) { for(int i = 0; i < m; i ++) { ll x, y, z; x = r[i][1]; y = r[i][0]; z = l[i]; adj[x].pb({z, y}); adj[y].pb({z, x}); } priority_queue< pll, vector<pll>, greater<pll> > pq; for(int i = 0; i < n; i ++)d[i]= mod; for(int i = 0; i < k; i ++) { ll x = p[i]; d[x] = 0; a[x] = 1; pq.push({0, x}); } while(!pq.empty()) { pll u = pq.top(); pq.pop(); if(a[u.se] == 0) { a[u.se] = 1; continue; } if(u.se == 0) { return u.fi; } for(pll v : adj[u.se]) { pq.push({v.fi+u.fi, v.se}); } } }