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

Обсуждение задачи 1176. Гиперканалы

What is incorrect in this program???Please give me a test on which it fails
Послано King Without Kingdom 22 июл 2002 02:46
#include<iostream.h>
int*conn[1001];
int*done[1001];
int quan[1001];
void razrul(int);
int *tstr;
void main(){
    int str[1001];
    tstr=new int[32200];
    int i,j,n,q,a;
    cin >> n >> a;
    a--;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            cin >> str[j];
        q=0;
        str[i]=1;
        for(j=0;j<n;j++)
            if(str[j]==0)
                q++;
        if(q!=0)
        {
            conn[i]=new int[q];
            done[i]=new int[q];
        }
        quan[i]=0;
        for(j=0;j<n;j++)
            if(str[j]==0)
            {
                conn[i][quan[i]]=j;
                done[i][quan[i]]=0;
                quan[i]++;
            }
    }
    razrul(a);
}
void razrul(int a){
    tstr[0]=a;
    int *tstr1;
    int ptstr=1,a0=a,i;
    while(1)
    {
        for(i=0;i<quan[a];i++)
            if(done[a][i]==0)
            {
                done[a][i]=1;
                a=conn[a][i];
                tstr[ptstr]=a;
                ptstr++;
                break;
            }
        if(a==a0)
            break;
    }
    if(ptstr!=1)
        tstr1=new int[ptstr];
    else
        return ;
    for(i=0;i<ptstr;i++)
        tstr1[i]=tstr[i];
    for(i=0;i<ptstr-1;i++)
    {
        cout <<tstr1[i]+1<<" "<<tstr1[i+1]+1<<"\n";
        razrul(tstr1[i+1]);
    }
}