Mai intai trebuie sa te autentifici.
Cod sursa(job #602341)
Utilizator | Data | 10 iulie 2011 22:17:39 | |
---|---|---|---|
Problema | Dusman | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.86 kb |
#include<stdio.h>
#define MaxN 1100
int V[MaxN];
int Viz[MaxN];
int A[MaxN][MaxN];
int N;
int K;
int M;
int gata;
int nr;
void citire(void)
{
int a;
int b;
FILE *f = fopen("dusman.in","r");
fscanf(f,"%d %d %d",&N,&K,&M);
for(int i=1;i<=M;i++)
{
fscanf(f,"%d %d",&a,&b);
A[a][b] = 1;
A[b][a] = 1;
}
fclose(f);
}
void back(int k)
{
if(k == N+1)
if(nr == K-1)
gata = 1;
else
nr ++;
else
for(int i=1;i<=N && !gata;i++)
if(!Viz[i] && !A[V[k-1]][i])
{
Viz[i] = 1;
V[k] = i;
back(k+1);
Viz[i] = 0;
}
}
void solve(void)
{
for(int i=1;i<=N && !gata;i++)
{
V[1] = i;
Viz[i] = 1;
back(2);
Viz[i] = 0;
}
}
int main()
{
FILE *g = fopen("dusman.out","w");
citire();
solve();
for(int i=1;i<=N;i++)
fprintf(g,"%d ",V[i]);
fclose(g);
return 0;
}