제출 #1038372

#제출 시각아이디문제언어결과실행 시간메모리
1038372vjudge1Commuter Pass (JOI18_commuter_pass)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#define ss second
#define pb push_back
#define mod 1000000007
#define int long long
#define N 100005
#define pu push
#define ff first
#define pint pair<int,int>
 
using namespace std;

int n,m,x1,y1,x2,y2;
int dis[N],vis[N],come[N],go[N],dp[N];
vector<pint> v[N];
vector<int> x;

inline void dijkstra(int start)
{
    memset(dis,0,sizeof(dis));
    memset(vis,0,sizeof(vis));
    priority_queue<pint> pq;
    pq.pu({0,start});
    while(!pq.empty())
    {
        int ind=pq.top().ss,cost=-pq.top().ff;
        pq.pop();
        if(vis[ind])
            continue;
        vis[ind]=1;
        dis[ind]=cost;
        for(int i=0;i<v[ind].size();i++)
        {
            pq.pu({-(cost+v[ind][i].ss),v[ind][i].ff});
        }
    }
    return;
}

int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>n>>m>>x1>>y1>>x2>>y2;
    x1--;
    x2--;
    y1--;
    y2--;
    for(int i=0;i<m;i++)
    {
        int a,b,c;
        cin>>a>>b>>c;
        a--;
        b--;
        v[a].pb({b,c});
        v[b].pb({a,c});
    }
    dijkstra(x1);
    memset(vis,0,sizeof(vis));
    queue<int> q;
    q.pu(y1);
    set<int> st;
    while(!q.empty())
    {
        //break;
        int ind=q.front();
        q.pop();
        if(vis[ind])
            continue;
        st.insert(ind);
        vis[ind]=1;
        for(int i=0;i<v[ind].size();i++)
        {
            if(vis[v[ind][i].ff]==0&&dis[ind]==(dis[v[ind][i].ff]+v[ind][i].ss))
            {
                q.pu(v[ind][i].ff);
            }
        }
    }
    int total[n];
    for(int i=0;i<n;i++)
    {
        total[i]=0;
        for(int j=0;j<v[i].size();j++)
        {
            if(st.count(v[i][j].ff)&&(dis[i]+v[i][j].ss)==dis[v[i][j].ff])
                total[i]++;
        }
    }
    memset(vis,0,sizeof(vis));
    q.pu(y1);
    while(!q.empty())
    {
        //break;
        int ind=q.front();
        q.pop();
        if(vis[ind])
            continue;
        x.pb(ind);
        vis[ind]=1;
        for(int i=0;i<v[ind].size();i++)
        {
            total[v[ind][i].ff]--;
            if(vis[v[ind][i].ff]==0&&dis[ind]==(dis[v[ind][i].ff]+v[ind][i].ss)&&!total[v[ind][i].ff])
            {
                q.pu(v[ind][i].ff);
            }
        }
    }
    dijkstra(x2);
    for(int i=0;i<n;i++){
        come[i]=dis[i];
        dp[i]=10000000000000000;
    }
    dijkstra(y2);
    for(int i=0;i<n;i++)
        go[i]=dis[i];
    int ans=come[y2];
    for(int i=0;i<x.size();i++)
    {
        int ind=x[i];
        int now=go[ind];
        for(int j=0;j<v[ind].size();j++)
        {
            now=min(now,dp[v[ind][j].ff]);
        }
        dp[ind]=now;
        ans=min(ans,dp[ind]+come[ind]);
    }
    cout<<ans<<endl;
    return 0;
}

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

commuter_pass.cpp:13:12: error: 'long long int y1' redeclared as different kind of entity
   13 | int n,m,x1,y1,x2,y2;
      |            ^~
In file included from /usr/include/features.h:461,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/os_defines.h:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/c++config.h:518,
                 from /usr/include/c++/10/cassert:43,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from commuter_pass.cpp:1:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:221:1: note: previous declaration 'double y1(double)'
  221 | __MATHCALL (y1,, (_Mdouble_));
      | ^~~~~~~~~~
commuter_pass.cpp: In function 'void dijkstra(long long int)':
commuter_pass.cpp:32:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |         for(int i=0;i<v[ind].size();i++)
      |                     ~^~~~~~~~~~~~~~
commuter_pass.cpp: In function 'int32_t main()':
commuter_pass.cpp:44:18: error: no match for 'operator>>' (operand types are 'std::basic_istream<char>::__istream_type' {aka 'std::basic_istream<char>'} and 'double(double) noexcept')
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |     ~~~~~~~~~~~~~^~~~
      |              |     |
      |              |     double(double) noexcept
      |              std::basic_istream<char>::__istream_type {aka std::basic_istream<char>}
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:120:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__istream_type& (*)(std::basic_istream<_CharT, _Traits>::__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
  120 |       operator>>(__istream_type& (*__pf)(__istream_type&))
      |       ^~~~~~~~
/usr/include/c++/10/istream:120:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)' {aka 'std::basic_istream<char>& (*)(std::basic_istream<char>&)'} [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:124:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__ios_type& (*)(std::basic_istream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]' (near match)
  124 |       operator>>(__ios_type& (*__pf)(__ios_type&))
      |       ^~~~~~~~
/usr/include/c++/10/istream:124:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'std::basic_istream<char>::__ios_type& (*)(std::basic_istream<char>::__ios_type&)' {aka 'std::basic_ios<char>& (*)(std::basic_ios<char>&)'} [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:131:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
  131 |       operator>>(ios_base& (*__pf)(ios_base&))
      |       ^~~~~~~~
/usr/include/c++/10/istream:131:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'std::ios_base& (*)(std::ios_base&)' [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:168:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
  168 |       operator>>(bool& __n)
      |       ^~~~~~~~
/usr/include/c++/10/istream:168:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: warning: the address of 'double y1(double)' will never be NULL [-Waddress]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
commuter_pass.cpp:44:20: error: cannot bind non-const lvalue reference of type 'bool&' to an rvalue of type 'bool'
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:172:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  172 |       operator>>(short& __n);
      |       ^~~~~~~~
/usr/include/c++/10/istream:172:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'short int' [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
commuter_pass.cpp:44:20: error: cannot bind rvalue '(short int)y1' to 'short int&'
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:175:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
  175 |       operator>>(unsigned short& __n)
      |       ^~~~~~~~
/usr/include/c++/10/istream:175:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'short unsigned int' [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
commuter_pass.cpp:44:20: error: cannot bind rvalue '(short unsigned int)y1' to 'short unsigned int&'
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:179:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  179 |       operator>>(int& __n);
      |       ^~~~~~~~
/usr/include/c++/10/istream:179:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'int' [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
commuter_pass.cpp:44:20: error: cannot bind rvalue '(int)y1' to 'int&'
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:182:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
  182 |       operator>>(unsigned int& __n)
      |       ^~~~~~~~
/usr/include/c++/10/istream:182:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'unsigned int' [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
commuter_pass.cpp:44:20: error: cannot bind rvalue '(unsigned int)y1' to 'unsigned int&'
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:186:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
  186 |       operator>>(long& __n)
      |       ^~~~~~~~
/usr/include/c++/10/istream:186:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'long int' [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
commuter_pass.cpp:44:20: error: cannot bind rvalue '(long int)y1' to 'long int&'
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:190:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
  190 |       operator>>(unsigned long& __n)
      |       ^~~~~~~~
/usr/include/c++/10/istream:190:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'long unsigned int' [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
commuter_pass.cpp:44:20: error: cannot bind rvalue '(long unsigned int)y1' to 'long unsigned int&'
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:195:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
  195 |       operator>>(long long& __n)
      |       ^~~~~~~~
/usr/include/c++/10/istream:195:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'long long int' [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
commuter_pass.cpp:44:20: error: cannot bind rvalue '(long long int)y1' to 'long long int&'
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:199:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
  199 |       operator>>(unsigned long long& __n)
      |       ^~~~~~~~
/usr/include/c++/10/istream:199:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'long long unsigned int' [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
commuter_pass.cpp:44:20: error: cannot bind rvalue '(long long unsigned int)y1' to 'long long unsigned int&'
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:235:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
  235 |       operator>>(void*& __p)
      |       ^~~~~~~~
/usr/include/c++/10/istream:235:7: note:   conversion of argument 1 would be ill-formed:
commuter_pass.cpp:44:20: error: invalid conversion from 'double (*)(double) noexcept' to 'void*' [-fpermissive]
   44 |     cin>>n>>m>>x1>>y1>>x2>>y2;
      |                    ^~
      |                    |
      |                    double (*)(double) noexcept
commuter_pass.cpp:44:20: error: cannot bind rvalue '(void*)y1' to 'void*&'
In file included from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/istream:214:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'
  214 |       operator>>(float& __f)
      |       ^~~~~~~~
/usr/include/c++/10/istream:214:25: note:   no known conversion for argument 1 from 'double(double) noexcept' to 'float&'
  214 |       operator>>(float& __f)
      |                  ~~~~~~~^~~
/usr/include/c++/10/istream:218:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'
  218 |       operator>>(double& __f)
      |       ^~~~~~~~
/usr/include/c++/10/istream:218:26: note:   no known conversion for argument 1 from 'double(double) noexcept' to 'double&'
  218 |       operator>>(double& __f)
      |                  ~~~~~~~~^~~
/usr/include/c++/10/istream:222:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'
  222 |       operator>>(long double& __f)
      |       ^~~~~~~~
/usr/include/c++/10/istream:222:31: note:   no known conversion for argument 1 from 'double(double) noexcept' to 'long double&'
  222 |       operator>>(long double& __f)
      |                  ~~~~~~~~~~~~~^~~
/usr/include/c++/10/istream:259:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]'
  259 |       operator>>(__streambuf_type* __sb);
      |       ^~~~~~~~
/usr/include/c++/10/istream:259:36: note:   no known conversion for argument 1 from 'double(double) noexcept' to 'std::basic_istream<char>::__streambuf_type*' {aka 'std::basic_streambuf<char>*'}
  259 |       operator>>(__streambuf_type* __sb);
      |                  ~~~~~~~~~~~~~~~~~~^~~~
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:45,
                 from commuter_pass.cpp:1:
/usr/include/c++/10/cstddef:130:5: note: candidate: 'template<class _IntegerTyp