ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Discussion of Problem 1096. Get the Right Route Plate!

What is type of the route numbers...
Posted by Sid 16 Apr 2005 22:49
I have 2 qwestions:
1)what is type of route number
2)I got Memory limit#3... but I use lists... and can't understand where I use so much memory (Perhaps the couse is recursive function but i'm not sure)

#include <iostream.h>
bool bisy[1001];
short prev[1001];
short hod[1001];
short numb[1001];

struct node
{
    short numb;
    short smej;
    node* next;
};
node* ar[1001];
void rec(short rr,short step)
{
    node* g;
    g=ar[rr];

    while (g!=NULL)
    {
        if (hod[g->smej]==-1 ||hod[g->smej]<step && !bisy[g->numb])
    {
        hod[g->smej]=step;
        numb[g->smej]=g->numb;
        prev[g->smej]=rr;
        bisy[g->numb]=true;
        rec(g->smej,step+1);
        bisy[g->numb]=false;
    }
    g=g->next;
    }

}
void print(int x)
{
    if (hod[x]>0)
    {
        print(prev[x]);
        cout<<numb[x]<<"\n";
    }
}
int main()
{

    int j,k,n,v1,v2,r;
    for (j=0;j<1001;j++)
    {
        ar[j]=NULL;
        bisy[j]=false;
        prev[j]=-1;
        numb[j]=-1;
        hod[j]=-1;
    }
    cin>>n;
    node* d;
    for(k=0;k<n;k++)
    {
        cin>>v1>>v2;
        d=new node;
        d->numb=k+1;
        d->smej=v2;
        d->next=ar[v1];
        ar[v1]=d;
    }
    cin>>r>>v1>>v2;
    hod[v1]=0;
    hod[v2]=0;
    rec(v1,1);
    rec(v2,1);
    if (hod[r]==-1)
    {
        cout<<"IMPOSSIBLE\n";
        return 0;
    }
    cout<<hod[r]<<"\n";

    print(r);
    return 0;
}