Submission #1281095

#TimeUsernameProblemLanguageResultExecution timeMemory
1281095sitingfakeCrocodile's Underground City (IOI11_crocodile)C++20
0 / 100
2 ms1848 KiB
#include<bits/stdc++.h> #include "crocodile.h" using namespace std; // define #define execute cerr << " Time: " << fixed << setprecision(6) << (1.0 * clock() / CLOCKS_PER_SEC) << "s\n"; #define ll long long #define ii pair <int , int> #define iii pair <int , ii> #define se second #define fi first #define all(v) (v).begin() , (v).end() #define Unique(v) sort(all(v)) , v.resize(unique(all(v)) - v.begin()) #define bit(x,i) (((x) >> (i)) & 1LL) #define flip(x,i) ((x) ^ (1LL << (i))) #define ms(d,x) memset(d , x , sizeof(d)) #define exist __exist #define ends __ends #define visit visited #define left __left #define right __right #define sitingfake 1 #define orz 1 //constant const long long mod = 1e9 + 7; const long long linf = 4557430888798830399LL; const long long nlinf = -4485090715960753727LL; const int inf = 1061109567; const int ninf = -1044266559; const int dx[] = {0 , -1 , 0 , 1}; const int dy[] = {-1 , 0 , 1 , 0}; template<typename T> bool maximize(T &a, const T &b) { if(a < b) {a = b; return 1;} return 0; } template<typename T> bool minimize(T &a, const T &b) { if(a > b) {a = b; return 1;} return 0; } void Plus(ll & a ,ll b) { b %= mod; a += b; if(a < 0) a += mod; a %= mod; return; } void Mul(ll & a, ll b) { (a *= (b % mod)) %= mod; return; } //code const int maxn = 1e5 + 7; int n , m , k; ll dist[maxn][2]; vector <ii> a[maxn]; int p[maxn]; void Dijkstra() { ms(dist , 0x3f); priority_queue <ii , vector <ii> , greater <ii>> pq; for(int i = 1; i <= k; i++) { dist[p[i]][0] = 0; dist[p[i]][1] = 0; pq.push({0 , p[i]}); } while(!pq.empty()) { int u = pq.top().se; ll cost = pq.top().fi; pq.pop(); if(cost > dist[u][1]) continue; for(ii i : a[u]) { int v = i.fi; int w = i.se; if(dist[v][0] > cost + w) { if(dist[v][0] < dist[v][1]) { dist[v][1] = dist[v][0]; pq.push({dist[v][1] , v}); } dist[v][0] = cost + w; pq.push({dist[v][1] , v}); } else if(dist[v][1] > cost + w) { dist[v][1] = cost + w; pq.push({dist[v][1] , v}); } } } } int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { n = N , m = M , k = K; for(int i = 1; i <= m; i++) { int u = R[i][0] , v = R[i][1] , w = L[i]; a[u].push_back({v , w}); a[v].push_back({u , w}); } for(int i = 1; i <= k; i++) { p[i] = P[i]; } Dijkstra(); return dist[0][1]; } //void solve(void) //{ // int n , m , k; // int r[maxn][2] , l[maxn] , p[maxn]; // cin >> n >> m >> k; // for(int i = 1; i <= m; i++) // { // cin >> r[i][0] >> r[i][1]; // } // for(int i = 1; i <= m; i++) // { // cin >> l[i]; // } // for(int i = 1; i <= k; i++) // { // cin >> p[i]; // } // cout << travel_plan(n , m , r , l , k , p); //} ///** //5 7 2 //0 2 //0 3 //3 2 //2 1 //0 1 //0 4 //3 4 //4 3 2 10 100 7 9 //1 3 // //5 4 3 //0 1 //0 2 //3 2 //2 4 //2 3 1 4 //1 3 4 //**/ //signed main() //{ // ios_base::sync_with_stdio(0); // cin.tie(0); // cout.tie(0); // // #define task "" // // if(fopen(task".inp","r")) // { // freopen(task".inp","r",stdin); // freopen(task".out","w",stdout); // } // // int tc = 1; // cin >> tc; // while(tc--) solve(); // // execute; //}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...