Submission #749865

# Submission time Handle Problem Language Result Execution time Memory
749865 2023-05-28T19:26:14 Z 1ne Cyberland (APIO23_cyberland) C++17
44 / 100
3000 ms 11336 KB
#include "cyberland.h"
#include <bits/stdc++.h>
#include <vector>
using namespace std;

double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) {
	 vector<vector<pair<int,int>>>adj(N);
	 for (int i = 0;i<M;++i){
	 	adj[x[i]].push_back({y[i],c[i]});
	 	adj[y[i]].push_back({x[i],c[i]});
	 }
	 queue<pair<int,int>>q;
	 q.push({0,0});
	 vector<vector<double>>dist(N,vector<double>(2,1e12));
	 dist[0][0] = 0;
	 while(!q.empty()){
	 	auto u = q.front();
	 	q.pop();
	 	if (u.first == H)continue;
	 	for (auto x:adj[u.first]){
	 		long long v = x.second;
	 		if (arr[x.first] == 0){
	 			v = -dist[u.first][u.second];	
	 		}
	 		if (dist[x.first][u.second] > dist[u.first][u.second] + v){
	 			dist[x.first][u.second] = dist[u.first][u.second] + v;
	 			q.push({x.first,u.second});
	 		}
	 		if (arr[x.first] == 2 && u.second == 0){
	 			int vx = 1e9 + 1;
	 			for (auto y:adj[x.first]){
	 				vx = min(vx,y.second);
	 			}
	 			double nx = dist[u.first][u.second] + x.second;
	 			double nxmin = nx;
	 			int cnt = K;
	 			while(nx > 0 && cnt > 0){
	 				nx/=2;
	 				nxmin = min(nxmin,nx);
	 				cnt--;
	 				nx+=2 * vx;
	 			}
	 			if (dist[x.first][1] > nxmin){
	 				dist[x.first][1] = nxmin;
	 				q.push({x.first,1});
	 			}
	 			//nx = dist[u.first][u.second] + x.second)/2 + 2 * vx) / 2 + 2 * vx ) / 2 
	 		}		
	 	}
	 }
	 if (dist[H][0] == 1e12 && dist[H][1] == 1e12)return -1;		
	 return min(dist[H][0],dist[H][1]);
}
# Verdict Execution time Memory Grader output
1 Incorrect 19 ms 468 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 22 ms 512 KB Correct.
2 Correct 26 ms 468 KB Correct.
3 Correct 26 ms 468 KB Correct.
4 Correct 27 ms 488 KB Correct.
5 Correct 25 ms 476 KB Correct.
6 Correct 22 ms 1732 KB Correct.
7 Correct 27 ms 1688 KB Correct.
8 Correct 12 ms 3108 KB Correct.
9 Correct 26 ms 340 KB Correct.
10 Correct 25 ms 400 KB Correct.
# Verdict Execution time Memory Grader output
1 Correct 26 ms 464 KB Correct.
2 Correct 26 ms 464 KB Correct.
3 Correct 24 ms 424 KB Correct.
4 Correct 28 ms 396 KB Correct.
5 Correct 27 ms 392 KB Correct.
6 Correct 6 ms 1492 KB Correct.
# Verdict Execution time Memory Grader output
1 Incorrect 30 ms 8396 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 22 ms 468 KB Correct.
2 Correct 27 ms 472 KB Correct.
3 Correct 26 ms 476 KB Correct.
4 Correct 24 ms 1492 KB Correct.
5 Correct 25 ms 396 KB Correct.
# Verdict Execution time Memory Grader output
1 Correct 26 ms 468 KB Correct.
2 Correct 23 ms 480 KB Correct.
3 Correct 46 ms 11336 KB Correct.
4 Correct 17 ms 1168 KB Correct.
5 Correct 26 ms 404 KB Correct.
6 Correct 25 ms 492 KB Correct.
# Verdict Execution time Memory Grader output
1 Incorrect 35 ms 468 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 3063 ms 476 KB Time limit exceeded
2 Halted 0 ms 0 KB -