Pagini recente » Cod sursa (job #137501) | Cod sursa (job #3196334) | Cod sursa (job #549677) | Cod sursa (job #1854618) | Cod sursa (job #623467)
Cod sursa(job #623467)
#include<fstream>
#include<stdio.h>
using namespace std;
int a[1000],dusm[1000][3],cnt=0,n,k,m,j,x,y;
int verificare(int p,int poz)
{
for(j=0;j<poz;j++)
if(a[j]==p) return 0;
if(dusm[a[poz-1]][0]==p||dusm[a[poz-1]][1]==p||dusm[a[poz-1]][2]==p) return 0;
return 1;
}
void afis()
{
FILE *g=fopen("dusman.out","wt");
//ofstream g("dusman.out");
/*for(i=1;i<=n;i++)
{
g<<'\n';
for(j=0;j<3;j++)
g<<dusm[i][j]<<' ';
}*/
for(int i=0;i<n;i++)
fprintf(g,"%i ",a[i]);
fclose(g);
}
void back(int poz)
{
for(int i=1;i<=n&&cnt<k;i++)
{
if(verificare(i,poz))
{
a[poz]=i;
if (poz==n-1)
cnt++;
else back(poz+1);
}
/*a[poz]=i;
if(poz==n)
{
afis();
if(verificare(poz)==1)
cnt++;
}
if(verificare(poz)==1&&poz<n)
back(poz+1);
*/
}
}
int main()
{
ifstream f("dusman.in");
f>>n>>k>>m;
for(int i=0;i<=n;i++)
for(j=0;j<3;j++)
dusm[i][j]=-1;
for(int i=0;i<m;i++)
{
f>>x>>y;
if(dusm[x][0]==-1) dusm[x][0]=y;
else if(dusm[x][1]==-1) dusm[x][1]=y;
else if(dusm[x][2]==-1) dusm[x][2]=y;
if(dusm[y][0]==-1) dusm[y][0]=x;
else if(dusm[y][1]==-1) dusm[y][1]=x;
else if(dusm[y][2]==-1) dusm[y][2]=x;
}
f.close();
back(0);
afis();
}