Pagini recente » Cod sursa (job #2730676) | Cod sursa (job #281992) | Cod sursa (job #530306) | Cod sursa (job #2195376) | Cod sursa (job #614589)
Cod sursa(job #614589)
#include<stdio.h>
#include<string.h>
int n, i, j, sol[20], p[20][20], nr;
char m[20][20];
void verificare (int gr){
int i, j;
for(i=1; i<=gr; i++)
for(j=1; j<=gr; j++)
p[i][j]=0;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(m[i][j]=='1')
p[sol[i]][sol[j]]=1;
/*for(i=1; i<=gr; i++){
for(j=1; j<=gr; j++)
printf("%d ", p[i][j]);
printf("\n");
}*/
for(i=1; i<=gr; i++)
for(j=1; j<=gr; j++)
if(p[i][j]==0 && i!=j)
return ;
nr++;
}
void back(int p, int gr){
if(p-1==n){
verificare(gr);
return ;
}
for(i=1; i<=gr; i++){
sol[p]=i;
back(p+1, gr);
}
sol[p]=gr+1;
back(p+1, gr+1);
}
int main(){
freopen ("copii.in", "r", stdin);
freopen ("copii.out", "w", stdout);
scanf("%d ", &n);
for(i=1; i<=n; i++)
gets(m[i]+1);
back(1, 0);
printf("%d ", nr-1);
return 0;
}