Pagini recente » Cod sursa (job #3210063) | Cod sursa (job #2923580) | Cod sursa (job #230531) | Cod sursa (job #3268512) | Cod sursa (job #125396)
Cod sursa(job #125396)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define maxN 300
struct str{int v;str*n;str(int pv,str*pn){v=pv,n=pn;}};
int n,m,res,pred[maxN],gr[maxN],viz[maxN];
int mad[maxN][maxN];
str*lad[maxN];
void inputFunc(){
FILE*fi=fopen("strazi.in","r");
fscanf(fi,"%d %d",&n,&m);
for(int i=1;i<=n;i++)lad[0]=new str(i,lad[0]);
gr[0]=n;pred[0]=-1;
for(int i=0;i<m;i++){
int a,b;
fscanf(fi,"%d %d",&a,&b);
lad[a]=new str(b,lad[a]);
mad[a][b]=1;
}
fclose(fi);
}
void back(){
int per[maxN],mp[maxN],res=100000;
for(int i=0;i<n;i++)per[i]=i+1;
do{
int cur=0;
for(int i=1;i<n;i++)if(!mad[per[i-1]][per[i]])cur++;
if(cur<res)res=cur,memcpy(mp,per,sizeof mp);
}while(next_permutation(per,per+n));
FILE*fi=fopen("strazi.out","w");
fprintf(fi,"%d\n",res);
for(int i=1;i<n;i++)if(!mad[mp[i-1]][mp[i]])fprintf(fi,"%d %d\n",mp[i-1],mp[i]);
for(int i=0;i<n;i++)fprintf(fi,"%d ",mp[i]);
fclose(fi);
}
int main(){
inputFunc();
back();
return 0;
}