답안 #335947

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
335947 2020-12-14T11:14:01 Z enerelt14 악어의 지하 도시 (IOI11_crocodile) C++14
0 / 100
14 ms 5356 KB
#include "crocodile.h"
#include<bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
using namespace std;
vector<pair<int, int> >adj[100005];
int a[100005][3], s[100005], path;
int dijkstra(int k){
  	bool vis[100005];
  	priority_queue<pair<int, int> >pq;
  	pq.push(mp(0, k));
  	while(!pq.empty()){
      	int u = pq.top().ss;
      	int cost = -pq.top().ff;
      	if (s[u]>=2)path=min(path,cost+a[u][2]);
      	pq.pop();
      	vis[u] = 1;
      	for(int i = 0; i < adj[u].size(); i++){
        	int v = adj[u][i].ff;
          	int e = adj[u][i].ss;
          	if(!vis[v]) pq.push(mp(-(cost + e), v));
      	}
      	while(!pq.empty() && vis[pq.top().ss]) pq.pop();
  	}
}
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
	for (int i=0;i<M;i++){
		adj[R[i][0]].pb(mp(R[i][1], L[i]));
		adj[R[i][1]].pb(mp(R[i][0], L[i]));
	}
	for (int i=0;i<K;i++){
		for (int j=0;j<adj[P[i]].size();j++){
			int v=adj[P[i]][j].ff;
			int cost=adj[P[i]][j].ss;
			s[v]++;
			if (s[v]==1)a[v][1]=cost;
			if (s[v]==2){
				a[v][2]=max(a[v][1], cost);
				a[v][1]=min(a[v][1], cost);
			}
			if (s[v]>=3){
				if (cost<a[v][1]){
					a[v][2]=a[v][1];
					a[v][1]=cost;
				}
				if (cost>=a[v][1] && cost<a[v][2])a[v][2]=cost;
			}
		}
	}
	path=1000000001;
	dijkstra(0);
	return path;
}
	

Compilation message

crocodile.cpp: In function 'int dijkstra(int)':
crocodile.cpp:20:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |        for(int i = 0; i < adj[u].size(); i++){
      |                       ~~^~~~~~~~~~~~~~~
crocodile.cpp:27:1: warning: no return statement in function returning non-void [-Wreturn-type]
   27 | }
      | ^
crocodile.cpp: In function 'int travel_plan(int, int, int (*)[2], int*, int, int*)':
crocodile.cpp:35:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |   for (int j=0;j<adj[P[i]].size();j++){
      |                ~^~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Runtime error 14 ms 5356 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 14 ms 5356 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 14 ms 5356 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -