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

Обсуждение задачи 1156. Два тура

What's wrong??
Послано Sega 6 авг 2003 13:19
This is my program:

#include<iostream.h>

int **a,*b,n,f=0,c[2]={0};

void dfs(int k,int t)
{
    int i;    b[k]=t; c[t]++;
    for (i=0; i<n; i++)
    {
        if (a[k][i])
        {
            if (b[i]==-1)
                dfs(i,(t+1)%2);
            else if (b[i]==b[k])
            {f=1; break;}
        }
    }
}

int main()
{
    int m,i,j,fir,sec;
    cin >> n >> m; n*=2;
    a=new int* [n];
    b=new int [n];
    for (i=0; i<n; i++)
    {
        a[i]=new int [n]; b[i]=-1;
        for (j=0; j<n; j++)
            a[i][j]=0;
    }
    for (i=0; i<m; i++)
    {
        cin >> fir >> sec;
        fir--; sec--;
        a[fir][sec]=a[sec][fir]=1;
    }
    for (i=0; i<n; i++)
        if (b[i]==-1) dfs(i,0);
    if (c[0]!=c[1]) f=1;
    if (f) cout << "IMPOSSIBLE";
    else
    {
    for (i=0; i<n; i++)
        if (!b[i]) cout << i+1 << ' ';
    cout << endl;
    for (i=0; i<n; i++)
        if (b[i]) cout << i+1 << ' ';
    }
    cout << endl;

    return 0;
}
Check, what is wrong there, please.
Try this simplest test (+)
Послано Renat Mullakhanov 7 авг 2003 10:59
1 0
Re: Try this simplest test (+)
Послано Sega 7 авг 2003 22:45
Many thanks