Submission #1217148

#TimeUsernameProblemLanguageResultExecution timeMemory
1217148LmaoLmaoCrocodile's Underground City (IOI11_crocodile)C++20
100 / 100
357 ms82040 KiB
#include<bits/stdc++.h> #include "crocodile.h" #define fi first #define se second #define int long long using namespace std; using ll = long long; using ii = pair<ll, ll>; using aa = array<int,3>; const int N = 1e6+5; const int INF = 1e9; const int mod = 1e9+7; vector<ii> adj[100005]; ii edge[100005]; int d[100005][2]; int vis[100005]; signed travel_plan(signed N, signed M, signed R[][2], signed L[], signed K, signed P[]) { int n=N,m=M,k=K; for(int i=0;i<m;i++) { int x=L[i]; int u=R[i][0],v=R[i][1]; adj[u].push_back({v,x}); adj[v].push_back({u,x}); //cout << u << ' ' << v << ' ' << x << endl; } priority_queue<aa,vector<aa>,greater<aa>> q; for(int i=0;i<n;i++) { d[i][0]=d[i][1]=1e18; } for(int i=0;i<k;i++) { int x=P[i]; d[x][0]=0; d[x][1]=0; q.push({0,x,0}); } while(!q.empty()) { aa u=q.top(); q.pop(); if(vis[u[1]] ) continue; vis[u[1]]=1; for(ii v:adj[u[1]]) { if(d[v.fi][1]>v.se+u[0]) { d[v.fi][1]=v.se+u[0]; if(d[v.fi][0]>d[v.fi][1]) { swap(d[v.fi][0],d[v.fi][1]); } q.push({d[v.fi][1],v.fi,1}); } } //break; } return d[0][1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...