Submission #8554

# Submission time Handle Problem Language Result Execution time Memory
8554 2014-09-17T03:05:26 Z dohyun0324 Beads and wires (APIO14_beads) C++
0 / 100
15 ms 14464 KB
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
vector<int>con[200010];
vector<int>len[200010];
vector<int>d[200010];
int sum,x,y,c,n,D[200010],big,big1,big2,p1,p2,ch[200010],anc[200010];
void dfs(int x)
{
    int i,j;
    ch[x]=1;
    for(i=0;i<con[x].size();i++)
    {
        if(ch[con[x][i]]==1){anc[con[x][i]]=x; continue;}
        dfs(con[x][i]);
    }
    big=0;
    if(x==1)
    {
        x=1;
    }
    for(i=0;i<con[x].size();i++)
    {
        if(anc[con[x][i]]==x) continue;
        sum=0; big=0;
        for(j=0;j<con[con[x][i]].size();j++) sum+=d[con[x][i]][j];
        for(j=0;j<con[con[x][i]].size();j++)
        {
            if(con[con[x][i]][j]==x) continue;
            if(big<sum-d[con[x][i]][j]+len[x][i]+len[con[x][i]][j])
            {
                big=sum-d[con[x][i]][j]+len[x][i]+len[con[x][i]][j];
            }
        }
        d[x][i]=max(big,D[con[x][i]]);
    }
    big1=-2147483647;
    for(i=0;i<con[x].size();i++)
    {
        if(anc[con[x][i]]==x) continue;
        if(big1<D[con[x][i]]+len[x][i]-d[x][i])
        {
            big1=D[con[x][i]]+len[x][i]-d[x][i];
            p1=i;
        }
    }
    big2=-2147483647;
    for(i=0;i<con[x].size();i++)
    {
        if(anc[con[x][i]]==x) continue;
        if(i!=p1 && big2<D[con[x][i]]+len[x][i]-d[x][i])
        {
            big2=D[con[x][i]]+len[x][i]-d[x][i];
            p2=i;
        }
    }
    sum=0;
    for(i=0;i<con[x].size();i++)
    {
        if(anc[con[x][i]]==x) continue;
        sum+=d[x][i];
    }
    if(big1==-2147483647 || big2==-2147483647) D[x]=sum;
    else D[x]=max(sum,sum+big1+big2);
}
int main()
{
    int i;
    scanf("%d",&n);
    for(i=1;i<n;i++)
    {
        scanf("%d %d %d",&x,&y,&c);
        con[x].push_back(y); con[y].push_back(x);
        len[x].push_back(c); len[y].push_back(c);
        d[x].push_back(0); d[y].push_back(0);
    }
    dfs(1);
    printf("%d",D[1]);
    return 0;
}

Compilation message

beads.cpp: In function 'void dfs(int)':
beads.cpp:13:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(i=0;i<con[x].size();i++)
             ~^~~~~~~~~~~~~~
beads.cpp:23:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(i=0;i<con[x].size();i++)
             ~^~~~~~~~~~~~~~
beads.cpp:27:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(j=0;j<con[con[x][i]].size();j++) sum+=d[con[x][i]][j];
                 ~^~~~~~~~~~~~~~~~~~~~~~
beads.cpp:28:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(j=0;j<con[con[x][i]].size();j++)
                 ~^~~~~~~~~~~~~~~~~~~~~~
beads.cpp:39:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(i=0;i<con[x].size();i++)
             ~^~~~~~~~~~~~~~
beads.cpp:49:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(i=0;i<con[x].size();i++)
             ~^~~~~~~~~~~~~~
beads.cpp:59:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(i=0;i<con[x].size();i++)
             ~^~~~~~~~~~~~~~
beads.cpp: In function 'int main()':
beads.cpp:70:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&n);
     ~~~~~^~~~~~~~~
beads.cpp:73:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d %d",&x,&y,&c);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 14 ms 14380 KB Output is correct
2 Correct 15 ms 14464 KB Output is correct
3 Incorrect 13 ms 14464 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 14 ms 14380 KB Output is correct
2 Correct 15 ms 14464 KB Output is correct
3 Incorrect 13 ms 14464 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 14 ms 14380 KB Output is correct
2 Correct 15 ms 14464 KB Output is correct
3 Incorrect 13 ms 14464 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 14 ms 14380 KB Output is correct
2 Correct 15 ms 14464 KB Output is correct
3 Incorrect 13 ms 14464 KB Output isn't correct
4 Halted 0 ms 0 KB -