Cod sursa(job #1321837)

Utilizator geniucosOncescu Costin geniucos Data 19 ianuarie 2015 16:26:32
Problema Oras Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<cstdio>

using namespace std;

int N, A[109][109];

void add_edge (int x, int y)
{
    A[x][y] = 1;
}

void solve (int n)
{
    if (n == 3)
    {
        add_edge (1, 2);
        add_edge (2, 3);
        add_edge (3, 1);
        return;
    }

    if (n == 6)
    {
        add_edge (1, 2);
        add_edge (2, 3);
        add_edge (3, 1);

        add_edge (4, 5);
        add_edge (5, 6);
        add_edge (6, 4);

        add_edge (1, 4);
        add_edge (1, 5);
        add_edge (6, 1);

        add_edge (2, 5);
        add_edge (2, 6);
        add_edge (4, 2);

        add_edge (3, 4);
        add_edge (3, 6);
        add_edge (5, 3);

        return ;
    }

    solve (n-2);
    for (int i=1; i<=n-2; i++)
        add_edge (n-1, i), add_edge (i, n);
    add_edge (n, n-1);
}

int main()
{
freopen ("oras.in", "r", stdin);
freopen ("oras.out", "w", stdout);

scanf ("%d", &N);

if (N == 4)
{
    printf ("-1\n");
    return 0;
}

solve (N);

for (int i=1; i<=N; i++ , printf ("\n"))
    for (int j=1; j<=N; j++)
        printf ("%d", A[i][j]);

return 0;
}