Submission #1357643

#TimeUsernameProblemLanguageResultExecution timeMemory
1357643coderg300711Crocodile's Underground City (IOI11_crocodile)C++20
100 / 100
546 ms101624 KiB
#include "bits/stdc++.h"
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pii pair<int,int>
#define pll pair<long long,long long>
#define yes cout<<"Yes\n"
#define no cout<<"No\n"
#define pb push_back
#define sz(x) (int)(x).size()
#define rsz resize
#define ass assign
#define F(i,l,r) for(int i=(l);i<(r);++i)
typedef long long ll;
typedef unsigned long long ull;
typedef long double lld;
template<typename T> using pqg = priority_queue<T, vector<T>, greater<T>>;
#define each(a,x) for(auto a:x)
#define FOR(i,a) for(int i=0;i<(a);i++)
#define ROF(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define eb emplace_back
#define ft front()
#define V vector

#include "crocodile.h"

int travel_plan(int n,int m,int r[][2],int l[],int k,int p[]){
V<V<pair<int,ll>>> adj(n);
FOR(i,m){
	adj[r[i][0]].pb({r[i][1],l[i]});
	adj[r[i][1]].pb({r[i][0],l[i]});
}
V<pair<ll,ll>> dist(n,{LLONG_MAX,LLONG_MAX});
priority_queue<pair<ll,int>,V<pair<ll,int>>,greater<>> pq;
FOR(i,k){
	dist[p[i]].fi=0;
	pq.push({0,p[i]});
}
while(!pq.empty()){
	auto cur=pq.top();
	pq.pop();
	if(cur.fi>=dist[cur.se].se)continue;
	if(cur.fi<dist[cur.se].fi){
		dist[cur.se].se=dist[cur.se].fi;
		dist[cur.se].fi=cur.fi;
	}else dist[cur.se].se=cur.fi;
	if(dist[cur.se].se!=LLONG_MAX){
		each(x,adj[cur.se])pq.push({dist[cur.se].se+x.se,x.fi});
	}
}
return dist[0].se;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...