Submission #391816

#TimeUsernameProblemLanguageResultExecution timeMemory
391816i_am_noob007 (CEOI14_007)C++17
100 / 100
324 ms33604 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define int ll #define rep(n) rep1(i,n) #define rep1(i,n) rep2(i,0,n) #define rep2(i,a,b) for(int i=a; i<(b); ++i) #define rep3(i,a,b) for(int i=a; i>=(b); --i) #define pb push_back #define pii pair<int,int> #define inf 0x3f3f3f3f #define all(a) a.begin(),a.end() #define sz(a) ((int)a.size()) #define pow2(x) (1ll<<(x)) #ifdef i_am_noob #define bug(...) cerr << "#" << __LINE__ << " " << #__VA_ARGS__ << "- ", _do(__VA_ARGS__) template<typename T> void _do(T x){cerr << x << endl;} template<typename T, typename ...S> void _do(T x, S ...y){cerr << x << ", ";_do(y...);} #else #define bug(...) 49 #endif const int maxn=200005; int n,m,a,b,c,d,dis1[maxn],dis2[maxn],dis3[maxn],dis4[maxn],maxx=-1,maxx2=-1,ans; vector<int> adj[maxn]; queue<int> q; bool vis[maxn]; signed main(){ ios_base::sync_with_stdio(0),cin.tie(0); cin >> n >> m >> a >> b >> c >> d; a--,b--,c--,d--; rep(m){ int u,v; cin >> u >> v; u--,v--; adj[u].pb(v),adj[v].pb(u); } memset(vis,0,sizeof vis); q.push(a); vis[a]=1; dis1[a]=0; while(!q.empty()){ int u=q.front(); q.pop(); for(auto v: adj[u]){ if(vis[v]) continue; q.push(v); vis[v]=1; dis1[v]=dis1[u]+1; } } memset(vis,0,sizeof vis); q.push(b); vis[b]=1; dis2[b]=0; while(!q.empty()){ int u=q.front(); q.pop(); for(auto v: adj[u]){ if(vis[v]) continue; q.push(v); vis[v]=1; dis2[v]=dis2[u]+1; } } memset(vis,0,sizeof vis); q.push(c); vis[c]=1; dis3[c]=0; while(!q.empty()){ int u=q.front(); q.pop(); for(auto v: adj[u]){ if(vis[v]) continue; q.push(v); vis[v]=1; dis3[v]=dis3[u]+1; } } memset(vis,0,sizeof vis); q.push(d); vis[d]=1; dis4[d]=0; while(!q.empty()){ int u=q.front(); q.pop(); for(auto v: adj[u]){ if(vis[v]) continue; q.push(v); vis[v]=1; dis4[v]=dis4[u]+1; } } bug(dis1[c],dis1[d],dis2[c],dis2[d]); if(dis2[c]==dis2[d]){ rep(n) if(dis3[i]==dis4[i]&&dis3[i]+dis2[i]==dis2[c]) maxx=max(maxx,dis2[i]); bug(maxx); } if(dis1[c]==dis1[d]){ rep(n) if(dis3[i]==dis4[i]&&dis3[i]+dis1[i]==dis1[c]) maxx2=max(maxx2,dis1[i]); bug(maxx2); } int x=dis2[c],y=dis2[d]; while(min(dis1[c],dis1[d])<min(x,y)){ if(x==y){ if(maxx){ x--,y--,maxx--; } else if(dis1[c]>=dis1[d]) x--; else y--; } else x--,y--; ans++; } if(x<dis1[c]||y<dis1[d]){ cout << ans-1 << "\n"; return 0; } if(dis1[c]==dis1[d]){ if(x!=y) cout << ans << "\n"; else{ if(maxx>maxx2) cout << ans-1 << "\n"; else cout << ans << "\n"; } return 0; } cout << ans << "\n"; }

Compilation message (stderr)

007.cpp: In function 'int main()':
007.cpp:22:18: warning: statement has no effect [-Wunused-value]
   22 | #define bug(...) 49
      |                  ^~
007.cpp:101:5: note: in expansion of macro 'bug'
  101 |     bug(dis1[c],dis1[d],dis2[c],dis2[d]);
      |     ^~~
007.cpp:22:18: warning: statement has no effect [-Wunused-value]
   22 | #define bug(...) 49
      |                  ^~
007.cpp:104:9: note: in expansion of macro 'bug'
  104 |         bug(maxx);
      |         ^~~
007.cpp:22:18: warning: statement has no effect [-Wunused-value]
   22 | #define bug(...) 49
      |                  ^~
007.cpp:109:9: note: in expansion of macro 'bug'
  109 |         bug(maxx2);
      |         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...