답안 #429449

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
429449 2021-06-16T00:03:38 Z Pbezz Sky Walking (IOI19_walk) C++14
컴파일 오류
0 ms 0 KB
#include "walk.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back
typedef pair<int,int>pii;

const ll MAXN = 1e5+5;
const ll INF = 1e16+7;
vector<vector<int>>has(MAXN);
//has[i] e lista de alturas em que i e intersetado

map<pii,vector<pair<pii,int>> >adj;
//mapi[{i,j}] e vector de pares adjacente,dist
map<pii,ll>dist;
map<pii,bool>visited;
long long min_distance(std::vector<int> x, std::vector<int> h, std::vector<int> l, std::vector<int> r, std::vector<int> y, int s, int g) {

	int i,j,prev,n=x.size(),m=l.size();

	for(j=0;j<m;j++){
for(i=l[j];i<=r[j];i++){
	if(h[i]>=y[j]){
	has[i].pb(y[j]);
	}
}
	}

	for(i=0;i<n;i++){
	has[i].pb(0);
	sort(has[i].begin(),has[i].end());
	}

	for(i=0;i<n;i++){
	for(j=1;j<(int)has[i].size();j++){
	adj[{i,has[i][j]}].pb({ {i,has[i][j-1]} ,has[i][j]-has[i][j-1]});
	adj[{i,has[i][j-1]}].pb({ {i,has[i][j]} ,has[i][j]-has[i][j-1]});
	}
}

	for(j=0;j<m;j++){
prev=l[j];
for(i=l[j]+1;i<=r[j];i++){
	if(h[i]<y[j])continue;

	adj[{prev,y[j]}].pb({ {i,y[j]} , x[i]-x[prev]});
	adj[{i,y[j]}].pb({ {prev,y[j]} , x[i]-x[prev]});

prev=i;
}
	}

//dijkstra
priority_queue< pair<pii,ll> >p;
	for(i=0;i<n;i++){
	for(j=0;j<(int)has[i].size();j++){
	dist[{i,has[i][j]}]=INF;
//	visited[{i,has[i][j]}]=false;
	}
}
p.push({{s,0},0});
dist[{s,0}]=0;
pii cur,a;

while(!p.empty()){
cur=p.top().first;
p.pop();
if(visited[cur])continue;
visited[cur]=true;
for(auto u:adj[cur]){

if(dist[u.first]>dist[cur]+u.second){
dist[u.first]=dist[cur]+u.second;
p.push({-dist[u.first],u.first});

}


}

}



	if(visited[{g,0}]){
	return dist[{g,0}];
	}else{
	return -1;
	}
}

Compilation message

walk.cpp: In function 'long long int min_distance(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, int, int)':
walk.cpp:76:32: error: no matching function for call to 'std::priority_queue<std::pair<std::pair<int, int>, long long int> >::push(<brace-enclosed initializer list>)'
   76 | p.push({-dist[u.first],u.first});
      |                                ^
In file included from /usr/include/c++/10/queue:64,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from walk.cpp:2:
/usr/include/c++/10/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::pair<std::pair<int, int>, long long int>; _Sequence = std::vector<std::pair<std::pair<int, int>, long long int>, std::allocator<std::pair<std::pair<int, int>, long long int> > >; _Compare = std::less<std::pair<std::pair<int, int>, long long int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<std::pair<int, int>, long long int>]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::pair<std::pair<int, int>, long long int>&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::pair<std::pair<int, int>, long long int>; _Sequence = std::vector<std::pair<std::pair<int, int>, long long int>, std::allocator<std::pair<std::pair<int, int>, long long int> > >; _Compare = std::less<std::pair<std::pair<int, int>, long long int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<std::pair<int, int>, long long int>]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::pair<std::pair<int, int>, long long int> >::value_type&&' {aka 'std::pair<std::pair<int, int>, long long int>&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~