# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
44542 | 2018-04-03T04:29:07 Z | zetapi | 관광 (NOI14_sightseeing) | C++14 | 3500 ms | 206152 KB |
/* Contest : Task : */ #include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define ll long long #define F first #define S second #define itr ::iterator typedef pair<int,int> pii; const int MAX=6e5+99; set<pii> vec[MAX]; int V,E,Q,X,Y,Z,res[MAX]; void dijkstra() { int tem; pii cur; set<pii> pq; set<pii> ::iterator it; pq.insert(mp(MAX,1)); res[1]=MAX; while(! pq.empty()) { cur=*pq.rbegin(); it=pq.end(); it--; pq.erase(it); for(auto A:vec[cur.second]) { tem=min(cur.first,A.second); if(tem>res[A.first]) { if(res[A.first]) pq.erase(pq.find(mp(res[A.first],A.first))); res[A.first]=tem; pq.insert(mp(res[A.first],A.first)); } } for(auto A:vec[cur.second]) vec[A.first].erase(vec[A.first].find(mp(cur.second,A.second))); vec[cur.second].clear(); } return ; } signed main() { //ios_base::sync_with_stdio(false); /*cin.tie(0); cout.tie(0);*/ //cin>>V>>E>>Q; scanf("%d %d %d",&V,&E,&Q); while(E--) { scanf("%d %d %d",&X,&Y,&Z); vec[X].insert(mp(Y,Z)); vec[Y].insert(mp(X,Z)); } dijkstra(); while(Q--) { scanf("%d",&X); printf("%d\n",res[X]); } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 27 ms | 28536 KB | Output is correct |
2 | Correct | 29 ms | 28648 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 28 ms | 28980 KB | Output is correct |
2 | Correct | 27 ms | 28980 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 126 ms | 33640 KB | Output is correct |
2 | Correct | 97 ms | 33640 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 3554 ms | 206152 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |