답안 #335938

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
335938 2020-12-14T10:43:57 Z enerelt14 악어의 지하 도시 (IOI11_crocodile) C++14
컴파일 오류
0 ms 0 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];
int dijkstra(int s){
  	bool vis[100005];
  	priority_queue<pair<int, int> >pq;
  	pq.push(mp(0, s));
  	while(!pq.empty()){
      	int u = pq.top().ss;
      	int cost = -pq.top().ff;
      	if (s[u]>=2)return cost+a[u][2];
      	pq.pop();
      	path=min(cost, path);
      	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;
			}
		}
	}
	return dijkstra(0);
}
	

Compilation message

crocodile.cpp: In function 'int dijkstra(int)':
crocodile.cpp:17:15: error: invalid types 'int[int]' for array subscript
   17 |        if (s[u]>=2)return cost+a[u][2];
      |               ^
crocodile.cpp:19:8: error: 'path' was not declared in this scope
   19 |        path=min(cost, path);
      |        ^~~~
crocodile.cpp:21: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]
   21 |        for(int i = 0; i < adj[u].size(); i++){
      |                       ~~^~~~~~~~~~~~~~~
crocodile.cpp: In function 'int travel_plan(int, int, int (*)[2], int*, int, int*)':
crocodile.cpp:36: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]
   36 |   for (int j=0;j<adj[P[i]].size();j++){
      |                ~^~~~~~~~~~~~~~~~~
crocodile.cpp: In function 'int dijkstra(int)':
crocodile.cpp:12:35: warning: control reaches end of non-void function [-Wreturn-type]
   12 |    priority_queue<pair<int, int> >pq;
      |                                   ^~