| Task: | Ping |
| Sender: | quasisphere |
| Submission time: | 2015-09-09 17:41:14 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | WRONG ANSWER |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | details |
| #2 | ACCEPTED | 0.05 s | details |
| #3 | ACCEPTED | 1.41 s | details |
| #4 | ACCEPTED | 0.28 s | details |
| #5 | ACCEPTED | 0.51 s | details |
| #6 | ACCEPTED | 0.58 s | details |
| #7 | ACCEPTED | 0.78 s | details |
| #8 | ACCEPTED | 0.48 s | details |
| #9 | ACCEPTED | 0.99 s | details |
| #10 | ACCEPTED | 0.28 s | details |
| #11 | ACCEPTED | 0.10 s | details |
| #12 | ACCEPTED | 0.21 s | details |
| #13 | ACCEPTED | 0.09 s | details |
| #14 | WRONG ANSWER | 0.52 s | details |
| #15 | ACCEPTED | 1.18 s | details |
| #16 | ACCEPTED | 0.46 s | details |
| #17 | ACCEPTED | 0.40 s | details |
Compiler report
input/code.cpp: In function 'int dijkstra(const std::vector<Vertex>&, int)':
input/code.cpp:56:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < neighbours.size(); ++i) {
^Code
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <map>
#include <utility>
#include <set>
#include <queue>
#include <tuple>
typedef long long LL;
using namespace std;
LL nVertices, nUpdates, target;
struct Edge {
int target;
int weight;
};
struct Vertex {
vector<Edge> neighbours;
};
struct FVertex {
double f;
int target;
};
vector<tuple<int,int,int> > updates;
//vector<Vertex> vertices;
int dijkstra(const vector<Vertex>& network, int startnode)
{
auto comp = [](FVertex f1, FVertex f2){ return f1.f > f2.f; };
priority_queue<FVertex, vector<FVertex>, decltype(comp)> q(comp);
set<int> visited;
q.push({0, startnode});
while (!q.empty()) {
FVertex f = q.top(); q.pop();
if (visited.find(f.target) != visited.end())
continue;
visited.insert(f.target);
//cout << "The shortest path to " << f.target << " is " << f.f << " units long" << endl;
if(f.target == nVertices-1){
//cout << "Distance: " << f.f << endl;
if((int)f.f <= target) return true;
return false;
}
const vector<Edge>& neighbours = network[f.target].neighbours;
for (int i = 0; i < neighbours.size(); ++i) {
FVertex nextf;
nextf.f = f.f + neighbours[i].weight;
nextf.target = neighbours[i].target;
q.push(nextf);
}
}
return false; // Not connected
};
bool check(LL time){
if(time < 0) return false;
vector<Vertex> graph(nVertices);
for(int i = 0; i < time; i++){
int from = get<0>(updates[i]);
int to = get<1>(updates[i]);
int dist = get<2>(updates[i]);
graph[from].neighbours.push_back({to, dist});
graph[to].neighbours.push_back({from, dist});
}
bool result = dijkstra(graph,0);
return result;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> nVertices >> nUpdates >> target;
for(int i = 0; i < nUpdates; i++){
int u,v,d;
cin >> u >> v >> d;
updates.push_back(make_tuple(u-1,v-1,d));
}
LL time = nUpdates+1;
LL step = (1LL) << 30;
while(step != 0){
if(check(time-step)){
time -= step;
}
step /= 2;
}
if(time == nUpdates + 1) cout << "QAQ" << endl;
else cout << time << endl;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 4 5 4 1 4 5 2 1 1 4 3 2 1 3 2 ... |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 4 3 4 1 3 2 3 4 3 2 4 1 |
| correct output |
|---|
| QAQ |
| user output |
|---|
| QAQ |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 79228 100000 609719088 71059 11143 686695 68230 2527 877907 53438 29888 202308 3549 78720 356072 ... |
| correct output |
|---|
| 95914 |
| user output |
|---|
| 95914 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 54105 100000 146069808 21034 33530 208067 31369 39373 438341 53601 30432 458004 44664 29661 964679 ... |
| correct output |
|---|
| 47249 |
| user output |
|---|
| 47249 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 27534 100000 630452185 4554 20869 156656 18125 16857 129766 7327 23355 162783 12208 19586 330973 ... |
| correct output |
|---|
| 37629 |
| user output |
|---|
| 37629 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 100000 100000 1896201 37633 24342 686408 21326 35599 18816 68870 92002 748527 87772 68354 816268 ... |
| correct output |
|---|
| QAQ |
| user output |
|---|
| QAQ |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 100000 100000 2753856 28301 86840 226813 23531 88963 140812 81527 28867 31169 81346 50536 187421 ... |
| correct output |
|---|
| QAQ |
| user output |
|---|
| QAQ |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 100000 100000 8894369 96437 89061 279201 93127 41538 16340 5646 70264 970395 96240 15676 526054 ... |
| correct output |
|---|
| 89568 |
| user output |
|---|
| 89568 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 100000 100000 8920310 51576 49748 441411 75379 58501 720057 77269 34775 380776 45446 74022 804975 ... |
| correct output |
|---|
| 94792 |
| user output |
|---|
| 94792 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 5000 100000 699655 4460 4283 850197 3421 2128 903580 3335 401 848289 4975 4482 241023 ... |
| correct output |
|---|
| 58358 |
| user output |
|---|
| 58358 |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 5000 100000 2906768 4100 2619 553305 4947 1462 263251 1703 4236 286383 4228 4797 635722 ... |
| correct output |
|---|
| 12392 |
| user output |
|---|
| 12392 |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 5000 100000 8525016 4452 4625 772169 4941 929 373626 2610 379 935441 3007 4 402654 ... |
| correct output |
|---|
| 16113 |
| user output |
|---|
| 16113 |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 5000 100000 6672172 2548 393 274388 1269 4076 230068 24 3024 596999 4658 2589 401693 ... |
| correct output |
|---|
| 3674 |
| user output |
|---|
| 3674 |
Test 14
Verdict: WRONG ANSWER
| input |
|---|
| 100000 100000 1000000000 61435 73156 809653003 31805 69457 997174565 46138 4746 664487503 77749 57316 726729812 ... |
| correct output |
|---|
| QAQ |
| user output |
|---|
| 99914 |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 70000 100000 389981 69496 42899 329 42449 25317 445 2446 37175 175 4791 27488 51 ... |
| correct output |
|---|
| 71694 |
| user output |
|---|
| 71694 |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 70000 100000 7413515 66481 13331 14 34935 8021 953 66946 55602 904 49080 1580 157 ... |
| correct output |
|---|
| 82046 |
| user output |
|---|
| 82046 |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 20000 100000 100000000 1 2 10000 2 3 10000 3 4 10000 4 5 10000 ... |
| correct output |
|---|
| 50001 |
| user output |
|---|
| 50001 |
