Pagini recente » Cod sursa (job #2942900) | Cod sursa (job #2762660) | Cod sursa (job #517674) | Cod sursa (job #2345557) | Cod sursa (job #2769275)
#include <bits/stdc++.h>
#define MAXN 200
using namespace std;
ifstream fin("oras.in");
ofstream fout("oras.out");
int n, road[MAXN+1][MAXN+1];//matricea de adiacenta a intersectiilor - o dau cu 1 mai mare, ca functia de marcare
//alg recursiv: daca am rez problema pentru n-2, gasim o configuratie ce o rezolva pt n
void constructRoads(int n){//functia asta, practic, face toata problema
if(n==3){//cazurile limita- iesim din recursivitate
road[1][2]=1;
road[2][3]=1;
road[3][1]=1;//bag o configuratie gasita de mana, care merge pentru 3
}
else if(n==4){//sunt doua - coborand in perechi, nu stiu daca sa es pe 3 sau pe 4
road[1][2]=1; road[2][3]=1; road[3][4]=1; road[4][1]=1;
road[1][3]=1;
road[2][4]=1;//idem pentru 4
}
else{
for(int i=1; i<n; i++){//luam oras cu oras
road[i][n-1]=1;//fiecare oras trebuie sa fie pe un ciclu de 3 cu n si n-1
road[n][i]=1;//asa ca-l leg de n-1 si pe n il leg la el
}
road[n-1][n]=1;//cu asta, leg toate ciclurile preexistente
constructRoads(n-2);
}
}
int main()
{
fin>>n;
constructRoads(n);
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++)
fout<<road[i][j];
fout<<"\n";
}
return 0;
}