Submission #702575

#TimeUsernameProblemLanguageResultExecution timeMemory
7025751075508020060209tcOlympic Bus (JOI20_ho_t4)C++14
0 / 100
62 ms13044 KiB
//#pragma GCC optimize("O3") #include<bits/stdc++.h> using namespace std; #define int long long #define X first #define Y second int n;int m; struct edg{ int x;int y;int d; }es[50005]; vector<int>e[200005]; vector<int>er[200005]; int vis[200005]; int sccid; int scc[200005]; vector<int>dfn; void dfs1(int nw){ vis[nw]=1; for(int i=0;i<e[nw].size();i++){ int id=e[nw][i]; int v=es[id].y; if(vis[v]){continue;} dfs1(v); } dfn.push_back(nw); } void dfs2(int nw){ scc[nw]=sccid; for(int i=0;i<e[nw].size();i++){ int id=e[nw][i]; int v=es[id].x; if(scc[v]){continue;} dfs2(v); } } void kosaraju(){ for(int i=1;i<=n;i++){ if(!vis[i]){ dfs1(i); } } sccid=1; reverse(dfn.begin(),dfn.end()); for(int i=0;i<dfn.size();i++){ int v=dfn[i]; if(scc[v]){continue;} sccid++; dfs2(v); } } int ch[500005]; void dfs(int nw){ ch[nw]=1; for(int i=0;i<e[nw].size();i++){ int id=e[nw][i]; int v=es[id].y; if(ch[v]){continue;} dfs(v); } } signed main(){ cin>>n>>m; for(int i=1;i<=m;i++){ int a;int b;int c;int d; cin>>a>>b>>c>>d; e[a].push_back(i); e[b].push_back(i); es[i]={a,b,d}; } kosaraju(); if(scc[1]==scc[n]){ cout<<0;return 0; } dfs(1); if(ch[n]){ int ans=1e16;int cnt=0; for(int i=1;i<=m;i++){ int a=scc[es[i].x];int b=scc[es[i].y];int d=es[i].d; if(a==scc[1]&&b==scc[n]){ ans=min(ans,d);cnt++; continue; } if(ch[a]&&b==scc[n]){ cnt++; } } if(cnt<=1){ans=1e16;} if(ans>=1e16){ cout<<-1; }else{ cout<<ans; } return 0; } for(int i=1;i<=n;i++){ ch[i]=0; } dfs(n); if(ch[1]){ int ans=1e16;int cnt=0; for(int i=1;i<=m;i++){ int a=scc[es[i].x];int b=scc[es[i].y];int d=es[i].d; if(a==scc[n]&&b==scc[1]){ ans=min(ans,d);cnt++; continue; } if(ch[a]&&b==scc[1]){ cnt++; } } if(cnt<=1){ans=1e16;} if(ans>=1e16){ cout<<-1; }else{ cout<<ans; } return 0; } cout<<-1;return 0; }

Compilation message (stderr)

ho_t4.cpp: In function 'void dfs1(long long int)':
ho_t4.cpp:22:14: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 | for(int i=0;i<e[nw].size();i++){
      |             ~^~~~~~~~~~~~~
ho_t4.cpp: In function 'void dfs2(long long int)':
ho_t4.cpp:33:14: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 | for(int i=0;i<e[nw].size();i++){
      |             ~^~~~~~~~~~~~~
ho_t4.cpp: In function 'void kosaraju()':
ho_t4.cpp:50:14: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 | for(int i=0;i<dfn.size();i++){
      |             ~^~~~~~~~~~~
ho_t4.cpp: In function 'void dfs(long long int)':
ho_t4.cpp:63:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |     for(int i=0;i<e[nw].size();i++){
      |                 ~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...