답안 #530904

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
530904 2022-02-27T05:15:14 Z ToroTN 꿈 (IOI13_dreaming) C++14
컴파일 오류
0 ms 0 KB
#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);
    }
}

Compilation message

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++)
      |                         ~^~~~~~~~~
dreaming.cpp:134:35: error: expected ';' before '}' token
  134 |         return max(suck,mx1+mx2+l)
      |                                   ^
      |                                   ;
  135 |     }else
      |     ~