제출 #751817

#제출 시각아이디문제언어결과실행 시간메모리
7518171075508020060209tcCyberland (APIO23_cyberland)C++17
컴파일 에러
0 ms0 KiB
#include "cyberland.h" #include <bits/stdc++.h> using namespace std; #define ll long long int n;int m;int KK;int HH; ll ar[200005]; ll xar[200005];ll yar[200005];ll car[200005]; vector<pair<int,ll>>e[200005]; void inp(){ // cin>>n>>m>>KK>>HH; HH++; for(int i=1;i<=n;i++){ // cin>>ar[i]; e[i].clear(); } for(int i=1;i<=m;i++){ //cin>>xar[i]>>yar[i]>>car[i]; xar[i]++;yar[i]++; e[xar[i]].push_back({yar[i],car[i]}); e[yar[i]].push_back({xar[i],car[i]}); } } int uf[200005]; int fin(int x){ if(uf[x]==x){return x;} uf[x]=fin(uf[x]); return uf[x]; } void mrg(int a,int b){ int pa=fin(a);int pb=fin(b); if(pa==pb){return;} uf[pa]=pb; } double dis[110][100005][2]; int vis[110][100005][2]; double slv(){ for(int i=1;i<=n;i++){ uf[i]=i; } for(int i=1;i<=m;i++){ if(xar[i]==HH||yar[i]==HH){continue;} mrg(xar[i],yar[i]); } /* */ priority_queue<pair<double,pair<int,int>>,vector<pair<double,pair<int,int>>>,greater<pair<double,pair<int,int>>>>pq; KK=min(KK,70); for(int k=0;k<=KK;k++){ for(int i=1;i<=n;i++){ dis[k][i][0]=1e16; vis[k][i][0]=0; dis[k][i][1]=1e16; vis[k][i][1]=0; } } dis[0][1]=0; pq.push({0,{0,1}}); for(int i=2;i<=n;i++){ if(ar[i]==0&&fin(i)==fin(1)){ pq.push({0,{0,i}}); dis[0][i][0]=0; pq.push({0,{1,i}}); dis[0][i][1]=0; } } for(int i=1;i<=m;i++){ mrg(xar[i],yar[i]); } if(fin(1)!=fin(HH)){ return -1; } while(pq.size()){ int nw=pq.top().second.second; int nwv=pq.top().second.first; pq.pop(); if(vis[0][nw][nwv]){continue;} vis[0][nw][nwv]=1; for(int i=0;i<e[nw].size();i++){ int v=e[nw][i]; double w=e[nw][i].second; if(!vis[0][v][0]){ if(dis[0][v][0]>dis[0][nw][nwv]+w){ dis[0][v][0]=dis[0][nw][nwv]+w; pq.push({dis[0][v][0],{0,v}}); } } } } double ans=dis[0][HH]; for(int i=1;i<=KK;i++){ if(!vis[i][HH]){continue;} ans=min(ans,dis[i][HH]); } /* for(int i=0;i<=3;i++){ for(int j=1;j<=n;j++){ cout<<dis[i][j]<<" "; }cout<<endl; } */ return ans; } //#define int int double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr){ cin>>N>>M>>K>>H; for(int i=1;i<=N;i++){ int v; cin>>v; arr.push_back(v); } // cout<<M<<" "; for(int i=1;i<=M;i++){ int a;int b;int cc; cin>>a>>b>>cc; x.push_back(a);y.push_back(b);c.push_back(cc); // cout<<i<<" "<<M<<endl; } n=N;m=M;KK=K;HH=H; for(int i=0;i<x.size();i++){ xar[i+1]=x[i]; yar[i+1]=y[i]; car[i+1]=c[i]; } for(int i=0;i<arr.size();i++){ ar[i+1]=arr[i]; } // cout<<"hehe"; inp(); return slv(); } signed main() { cout<<fixed<<setprecision(7)<<solve(0,0,0,0,{},{},{},{}); // inp(); // cout<<slv(); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

cyberland.cpp: In function 'double slv()':
cyberland.cpp:64:10: error: incompatible types in assignment of 'int' to 'double [2]'
   64 | dis[0][1]=0;
      | ~~~~~~~~~^~
cyberland.cpp:89:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   89 |     for(int i=0;i<e[nw].size();i++){
      |                 ~^~~~~~~~~~~~~
cyberland.cpp:90:22: error: cannot convert '__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, long long int> >, std::pair<int, long long int> >::value_type' {aka 'std::pair<int, long long int>'} to 'int' in initialization
   90 |         int v=e[nw][i];
      |                      ^
cyberland.cpp:109:21: error: cannot convert 'double*' to 'double' in initialization
  109 | double ans=dis[0][HH];
      |            ~~~~~~~~~^
      |                     |
      |                     double*
cyberland.cpp:113:27: error: no matching function for call to 'min(double&, double [2])'
  113 |     ans=min(ans,dis[i][HH]);
      |                           ^
In file included from /usr/include/c++/10/vector:60,
                 from cyberland.h:1,
                 from cyberland.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
cyberland.cpp:113:27: note:   deduced conflicting types for parameter 'const _Tp' ('double' and 'double [2]')
  113 |     ans=min(ans,dis[i][HH]);
      |                           ^
In file included from /usr/include/c++/10/vector:60,
                 from cyberland.h:1,
                 from cyberland.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
cyberland.cpp:113:27: note:   deduced conflicting types for parameter 'const _Tp' ('double' and 'double [2]')
  113 |     ans=min(ans,dis[i][HH]);
      |                           ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from cyberland.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
cyberland.cpp:113:27: note:   mismatched types 'std::initializer_list<_Tp>' and 'double'
  113 |     ans=min(ans,dis[i][HH]);
      |                           ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from cyberland.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
cyberland.cpp:113:27: note:   mismatched types 'std::initializer_list<_Tp>' and 'double'
  113 |     ans=min(ans,dis[i][HH]);
      |                           ^
cyberland.cpp: In function 'double solve(int, int, int, int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
cyberland.cpp:145:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  145 |     for(int i=0;i<x.size();i++){
      |                 ~^~~~~~~~~
cyberland.cpp:150:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  150 |     for(int i=0;i<arr.size();i++){
      |                 ~^~~~~~~~~~~