답안 #251102

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
251102 2020-07-20T08:23:57 Z huuducpro 꿈 (IOI13_dreaming) C++14
18 / 100
79 ms 12276 KB
#include <bits/stdc++.h>
#include "dreaming.h"
using namespace std;
int n,vs[100002],fa[100002],d[100002];
typedef pair <int,int> pp;
vector <pp> adj[100002];
vector <int> X;
void dfs(int u)
{
    vs[u]=1;
    X.push_back(u);
    for (int i=0;i<adj[u].size();i++)
    {
        int v=adj[u][i].first;
        if (vs[v]==1) continue;
        vs[v]=1;fa[v]=u;
        d[v]=d[u]+adj[u][i].second;
        dfs(v);
    }
}
int get(int r)
{
    X.clear();
    dfs(r);
    int p=r;
    for (int i=0;i<X.size();i++)
    {
        if (d[X[i]]>d[p]) p=X[i];
        vs[X[i]]=0;
    }
    X.clear();
    r=p;fa[r]=0;d[r]=0;dfs(p);
    for (int i=0;i<X.size();i++)
        if (d[X[i]]>d[p]) p=X[i];
    int ans=d[p];int w=d[p];
    while (p>0)
    {
        ans=min(ans,max(d[p],w-d[p]));
        p=fa[p];
    }
    return ans;

}
int travelTime(int nn,int m,int l,int A[],int B[],int T[])
{
    n=nn;
    for (int i=0;i<m;i++)
    {
        A[i]++;B[i]++;
        adj[A[i]].push_back({B[i],T[i]});
        adj[B[i]].push_back({A[i],T[i]});
    }
    vector <int> P;
    for (int i=1;i<=n;i++)
    {
        if (vs[i]==1) continue;
        int t=get(i);
       // cout<<i-1<<' '<<t<<'\n';
        P.push_back(t);

    }
    sort(P.begin(),P.end(),greater<int>());
    if (P.size()==1) return P[0];
    if (P.size()==2) return P[0]+P[1]+l;
    return max(P[0]+P[1]+l,P[1]+P[2]+2*l);
}


Compilation message

dreaming.cpp: In function 'void dfs(int)':
dreaming.cpp:12:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0;i<adj[u].size();i++)
                  ~^~~~~~~~~~~~~~
dreaming.cpp: In function 'int get(int)':
dreaming.cpp:26:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0;i<X.size();i++)
                  ~^~~~~~~~~
dreaming.cpp:33:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0;i<X.size();i++)
                  ~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 79 ms 12276 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 79 ms 12276 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 79 ms 12276 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 6912 KB Output is correct
2 Correct 24 ms 6904 KB Output is correct
3 Correct 33 ms 6904 KB Output is correct
4 Correct 25 ms 6912 KB Output is correct
5 Correct 25 ms 7040 KB Output is correct
6 Correct 26 ms 7416 KB Output is correct
7 Correct 27 ms 7032 KB Output is correct
8 Correct 27 ms 6904 KB Output is correct
9 Correct 28 ms 6776 KB Output is correct
10 Correct 26 ms 7040 KB Output is correct
11 Correct 2 ms 2688 KB Output is correct
12 Correct 6 ms 4476 KB Output is correct
13 Correct 7 ms 4604 KB Output is correct
14 Correct 7 ms 4476 KB Output is correct
15 Correct 6 ms 4476 KB Output is correct
16 Correct 8 ms 4476 KB Output is correct
17 Correct 6 ms 4348 KB Output is correct
18 Correct 7 ms 4604 KB Output is correct
19 Correct 7 ms 4604 KB Output is correct
20 Correct 2 ms 2688 KB Output is correct
21 Correct 2 ms 2688 KB Output is correct
22 Correct 2 ms 2816 KB Output is correct
23 Correct 7 ms 4476 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 79 ms 12276 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 79 ms 12276 KB Output isn't correct
2 Halted 0 ms 0 KB -