제출 #530905

#제출 시각아이디문제언어결과실행 시간메모리
530905ToroTN꿈 (IOI13_dreaming)C++14
47 / 100
85 ms9116 KiB
#include<bits/stdc++.h> using namespace std; #include "dreaming.h" int mx1=-1e9,mx2=-1e9,sum,val,n,m,l,u_i,v_i,w_i,d1[100005],d2[100005],u,y,ans=1e9,cost,mx,p[100005],lst,st,md,ed,sup,suck=-1e9,comp=0; vector<pair<int,int> > v[100005]; vector<int> path,g; queue<int> q; void bfs(int x) { q.push(x); d1[x]=0; mx=-1; while(!q.empty()) { u=q.front(); q.pop(); if(d1[u]>mx) { mx=d1[u]; x=u; } for(int i=0;i<v[u].size();i++) { y=v[u][i].first; cost=v[u][i].second; if(d1[y]==-1) { d1[y]=d1[u]+cost; q.push(y); } } } mx=-1; d2[x]=0; p[x]=0; q.push(x); while(!q.empty()) { u=q.front(); q.pop(); if(d2[u]>mx) { mx=d2[u]; lst=u; } for(int i=0;i<v[u].size();i++) { y=v[u][i].first; cost=v[u][i].second; if(d2[y]==-1) { p[y]=u; d2[y]=d2[u]+cost; q.push(y); } } } path.clear(); g.clear(); while(1) { if(lst==0) { break; } path.push_back(lst); if(p[lst]!=0) { g.push_back(d2[lst]-d2[p[lst]]); } lst=p[lst]; } } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { n=N; m=M; l=L; for(int i=0;i<m;i++) { u_i=A[i]+1; v_i=B[i]+1; w_i=T[i]; v[u_i].push_back({v_i,w_i}); v[v_i].push_back({u_i,w_i}); } memset(d1,-1,sizeof d1); memset(d2,-1,sizeof d2); for(int i=1;i<=n;i++) { if(d1[i]==-1) { ++comp; bfs(i); /*for(int j=0;j<path.size();j++) { printf("%d ",path[j]); } printf("\n"); for(int j=0;j<g.size();j++) { printf("%d ",g[j]); } printf("\n");*/ val=1e9; for(int j=0;j<g.size();j++) { sum+=g[j]; } suck=max(suck,sum); sup=0; val=min(val,max(sup,sum)); for(int j=0;j<g.size();j++) { sup+=g[j]; sum-=g[j]; val=min(val,max(sup,sum)); } if(val>=mx1) { mx2=mx1; mx1=val; }else if(val>=mx2) { mx2=val; } } } //printf("%d %d\n",mx1,mx2); if(comp==1) { return suck; }else if(comp==2) { return max(suck,mx1+mx2+l); }else { return max(suck,mx1+mx2+l); } }

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

dreaming.cpp: In function 'void bfs(int)':
dreaming.cpp:22:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |         for(int i=0;i<v[u].size();i++)
      |                     ~^~~~~~~~~~~~
dreaming.cpp:46:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |         for(int i=0;i<v[u].size();i++)
      |                     ~^~~~~~~~~~~~
dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:105:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  105 |             for(int j=0;j<g.size();j++)
      |                         ~^~~~~~~~~
dreaming.cpp:112:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  112 |             for(int j=0;j<g.size();j++)
      |                         ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...