제출 #320436

#제출 시각아이디문제언어결과실행 시간메모리
320436wildturtle꿈 (IOI13_dreaming)C++14
18 / 100
76 ms22244 KiB
#include "dreaming.h" #include<bits/stdc++.h> using namespace std; int a,b,c,d,i,e,f,g,n,m,k,l,fix[500005],maxx,idx,maxx1; vector < pair <int,int> > v[500005]; vector <int> v1; stack <int> ms; void dfs(int x,int y,int z) { fix[x]=1; if(maxx<z) { maxx=z; idx=x; } for(int i=0;i<v[x].size();i++) { if(v[x][i].first==y) continue; dfs(v[x][i].first,x,z+v[x][i].second); } } void dfs1(int x,int y,int z,int p) { if(z!=-1 && k==0) ms.push(v[z][p].second); for(int i=0;i<v[x].size();i++) { if(v[x][i].first==z) continue; dfs1(v[x][i].first,y,x,i); } if(x==y) k=1; if(k==0) ms.pop(); } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { for(int i=0;i<M;i++) { v[A[i]].push_back( { B[i] , T[i] } ); v[B[i]].push_back( { A[i] , T[i] } ); } for(int i=0;i<N;i++) { if(fix[i]) continue; //cout<<i<<" "; maxx=0; idx=-1; dfs(i,-1,0); a=idx; maxx=0; idx=-1; dfs(a,-1,0); b=idx; maxx1=max(maxx1,maxx); k=0; dfs1(a,b,-1,0); //cout<<a<<" "<<b<<" "<<maxx<<" "; if(ms.empty()) v1.push_back(0); a=0; while(!ms.empty()) { //cout<<ms.top()<<"-"; a+=ms.top(); if(a==maxx/2) { v1.push_back(maxx/2); break; } else if(a>maxx/2) { v1.push_back(min(a,max(a-ms.top(),maxx-a+ms.top()))); break; } ms.pop(); } while(!ms.empty()) ms.pop(); //cout<<v1[v1.size()-1]<<endl; } sort(v1.begin(),v1.end()); if(v1.size()>=2) maxx1=max(maxx1,v1[v1.size()-1]+v1[v1.size()-2]+L); if(v1.size()>=3) maxx1=max(maxx1,v1[v1.size()-2]+v1[v1.size()-3]+2*L); return maxx1; }/* int main() { int a1[]={0,8,2,5,5,1,1,10}; int b1[]={8,2,7,11,1,3,9,6}; int c1[]={4,2,4,3,7,1,5,3}; cout<<travelTime(12, 8, 2, a1, b1, c1); }*/

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

dreaming.cpp: In function 'void dfs(int, int, int)':
dreaming.cpp:11:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 |     for(int i=0;i<v[x].size();i++) {
      |                 ~^~~~~~~~~~~~
dreaming.cpp: In function 'void dfs1(int, int, int, int)':
dreaming.cpp:18:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |     for(int i=0;i<v[x].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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...