ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1018. Двоичная яблоня

Why I got CE?
Послано Blue Soply 11 фев 2003 18:41
Here is my program,it runs all right on my computer,but it got CE.
Can anyone help me? Thanks!


#include <stdlib.h>
#include <iostream.h>
int way[101][101],temp[101][101];
int father[101],son[101];
int n,q;
long sum,min;
int used[101];
void search(int num,long m)
{
    int i;
    if (num==0)
    {
        if (m<min) min=m;
    } else
    {
        for (i=1;i<=n;i++)
            if (son[i]==0 && used[i]==0)
            {
                used[i]=1;
                son[father[i]]--;
                search(num-1,m+way[father[i]][i]);
                son[father[i]]++;
                used[i]=0;
            }
    }
}
main()
{
    int x,y,w,t,i,j,k;
    cin>>n>>q;
    t=0;sum=0;
    memset(way,0,sizeof(way));
    while    (cin>>x>>y>>w)
    {
        if (w==0) t++; else
        {
            way[x][y]=w;
            way[y][x]=w;
            way[x][0]++;
            way[y][0]++;
            sum+=w;
        }
    }
    q-=t;
    memset(father,0,sizeof(father));
    memcpy(temp,way,sizeof(way));
    memset(son,0,sizeof(son));
    for (i=1;i<=n-1;i++)
    {
        for (j=2;j<=n;j++)
            if (temp[j][0]==1) break;
        for (k=1;k<=n;k++)
            if (temp[j][k]!=0) break;
        father[j]=k;
        temp[j][0]=0;
        temp[k][0]--;
        temp[j][k]=0;temp[k][j]=0;
        son[k]++;
    }
    min=sum;
    memset(used,0,sizeof(used));
    search(q,0);
    sum=sum-min;
    cout<<sum<<endl;
    return(0);
}







Re: Why I got CE?
Послано Calin Ciutu (ciutu@go.ro) 12 фев 2003 04:51
Here is your compilation error :

You tried to solve problem 1018. Your solution on C++ was compiled
with
the following errors:

329286
e:\Judge\vc7\include\useoldio.h(29) : warning C4995:
'_OLD_IOSTREAMS_ARE_DEPRECATED': name was marked as #pragma
deprecated
temp\329286(32) : error C2065: 'memset' : undeclared identifier
temp\329286(46) : error C2065: 'memcpy' : undeclared identifier
4.



My advise : before submitting any problem compile your source with a
visual c 7 compiler (vc7) .

> Here is my program,it runs all right on my computer,but it got CE.
> Can anyone help me? Thanks!
>
>
> #include <stdlib.h>
> #include <iostream.h>
> int way[101][101],temp[101][101];
> int father[101],son[101];
> int n,q;
> long sum,min;
> int used[101];
> void search(int num,long m)
> {
>     int i;
>     if (num==0)
>     {
>         if (m<min) min=m;
>     } else
>     {
>         for (i=1;i<=n;i++)
>             if (son[i]==0 && used[i]==0)
>             {
>                 used[i]=1;
>                 son[father[i]]--;
>                 search(num-1,m+way[father[i]][i]);
>                 son[father[i]]++;
>                 used[i]=0;
>             }
>     }
> }
> main()
> {
>     int x,y,w,t,i,j,k;
>     cin>>n>>q;
>     t=0;sum=0;
>     memset(way,0,sizeof(way));
>     while    (cin>>x>>y>>w)
>     {
>         if (w==0) t++; else
>         {
>             way[x][y]=w;
>             way[y][x]=w;
>             way[x][0]++;
>             way[y][0]++;
>             sum+=w;
>         }
>     }
>     q-=t;
>     memset(father,0,sizeof(father));
>     memcpy(temp,way,sizeof(way));
>     memset(son,0,sizeof(son));
>     for (i=1;i<=n-1;i++)
>     {
>         for (j=2;j<=n;j++)
>             if (temp[j][0]==1) break;
>         for (k=1;k<=n;k++)
>             if (temp[j][k]!=0) break;
>         father[j]=k;
>         temp[j][0]=0;
>         temp[k][0]--;
>         temp[j][k]=0;temp[k][j]=0;
>         son[k]++;
>     }
>     min=sum;
>     memset(used,0,sizeof(used));
>     search(q,0);
>     sum=sum-min;
>     cout<<sum<<endl;
>     return(0);
> }
>
>
>
>
>
>
>
>
>
Thank you very much!
Послано Blue Soply 14 фев 2003 16:47
> Here is your compilation error :
>
> You tried to solve problem 1018. Your solution on C++ was compiled
> with
> the following errors:
>
> 329286
> e:\Judge\vc7\include\useoldio.h(29) : warning C4995:
> '_OLD_IOSTREAMS_ARE_DEPRECATED': name was marked as #pragma
> deprecated
> temp\329286(32) : error C2065: 'memset' : undeclared identifier
> temp\329286(46) : error C2065: 'memcpy' : undeclared identifier
> 4.
>
>
>
> My advise : before submitting any problem compile your source with
a
> visual c 7 compiler (vc7) .
>
> > Here is my program,it runs all right on my computer,but it got
CE.
> > Can anyone help me? Thanks!
> >
> >
> > #include <stdlib.h>
> > #include <iostream.h>
> > int way[101][101],temp[101][101];
> > int father[101],son[101];
> > int n,q;
> > long sum,min;
> > int used[101];
> > void search(int num,long m)
> > {
> >     int i;
> >     if (num==0)
> >     {
> >         if (m<min) min=m;
> >     } else
> >     {
> >         for (i=1;i<=n;i++)
> >             if (son[i]==0 && used[i]==0)
> >             {
> >                 used[i]=1;
> >                 son[father[i]]--;
> >                 search(num-1,m+way[father[i]][i]);
> >                 son[father[i]]++;
> >                 used[i]=0;
> >             }
> >     }
> > }
> > main()
> > {
> >     int x,y,w,t,i,j,k;
> >     cin>>n>>q;
> >     t=0;sum=0;
> >     memset(way,0,sizeof(way));
> >     while    (cin>>x>>y>>w)
> >     {
> >         if (w==0) t++; else
> >         {
> >             way[x][y]=w;
> >             way[y][x]=w;
> >             way[x][0]++;
> >             way[y][0]++;
> >             sum+=w;
> >         }
> >     }
> >     q-=t;
> >     memset(father,0,sizeof(father));
> >     memcpy(temp,way,sizeof(way));
> >     memset(son,0,sizeof(son));
> >     for (i=1;i<=n-1;i++)
> >     {
> >         for (j=2;j<=n;j++)
> >             if (temp[j][0]==1) break;
> >         for (k=1;k<=n;k++)
> >             if (temp[j][k]!=0) break;
> >         father[j]=k;
> >         temp[j][0]=0;
> >         temp[k][0]--;
> >         temp[j][k]=0;temp[k][j]=0;
> >         son[k]++;
> >     }
> >     min=sum;
> >     memset(used,0,sizeof(used));
> >     search(q,0);
> >     sum=sum-min;
> >     cout<<sum<<endl;
> >     return(0);
> > }
> >
> >
> >
> >
> >
> >
> >
> >
> >
Search if wrong!
Послано jakrinchose 15 фев 2003 21:35
> Here is your compilation error :
>
> You tried to solve problem 1018. Your solution on C++ was compiled
> with
> the following errors:
>
> 329286
> e:\Judge\vc7\include\useoldio.h(29) : warning C4995:
> '_OLD_IOSTREAMS_ARE_DEPRECATED': name was marked as #pragma
> deprecated
> temp\329286(32) : error C2065: 'memset' : undeclared identifier
> temp\329286(46) : error C2065: 'memcpy' : undeclared identifier
> 4.
>
>
>
> My advise : before submitting any problem compile your source with
a
> visual c 7 compiler (vc7) .
>
> > Here is my program,it runs all right on my computer,but it got
CE.
> > Can anyone help me? Thanks!
> >
> >
> > #include <stdlib.h>
> > #include <iostream.h>
> > int way[101][101],temp[101][101];
> > int father[101],son[101];
> > int n,q;
> > long sum,min;
> > int used[101];
> > void search(int num,long m)
> > {
> >     int i;
> >     if (num==0)
> >     {
> >         if (m<min) min=m;
> >     } else
> >     {
> >         for (i=1;i<=n;i++)
> >             if (son[i]==0 && used[i]==0)
> >             {
> >                 used[i]=1;
> >                 son[father[i]]--;
> >                 search(num-1,m+way[father[i]][i]);
> >                 son[father[i]]++;
> >                 used[i]=0;
> >             }
> >     }
> > }
> > main()
> > {
> >     int x,y,w,t,i,j,k;
> >     cin>>n>>q;
> >     t=0;sum=0;
> >     memset(way,0,sizeof(way));
> >     while    (cin>>x>>y>>w)
> >     {
> >         if (w==0) t++; else
> >         {
> >             way[x][y]=w;
> >             way[y][x]=w;
> >             way[x][0]++;
> >             way[y][0]++;
> >             sum+=w;
> >         }
> >     }
> >     q-=t;
> >     memset(father,0,sizeof(father));
> >     memcpy(temp,way,sizeof(way));
> >     memset(son,0,sizeof(son));
> >     for (i=1;i<=n-1;i++)
> >     {
> >         for (j=2;j<=n;j++)
> >             if (temp[j][0]==1) break;
> >         for (k=1;k<=n;k++)
> >             if (temp[j][k]!=0) break;
> >         father[j]=k;
> >         temp[j][0]=0;
> >         temp[k][0]--;
> >         temp[j][k]=0;temp[k][j]=0;
> >         son[k]++;
> >     }
> >     min=sum;
> >     memset(used,0,sizeof(used));
> >     search(q,0);
> >     sum=sum-min;
> >     cout<<sum<<endl;
> >     return(0);
> > }
> >
> >
> >
> >
> >
> >
> >
> >
> >
Search if wrong!
Послано jakrinchose 15 фев 2003 21:37
You'd better use dynamic!
And of course be CE!
I'm sorry,search is wrong!
Послано jakrinchose 16 фев 2003 09:27
> You'd better use dynamic!
> And of course be CE!