Pagini recente » Cod sursa (job #1470939) | Cod sursa (job #2703760) | Cod sursa (job #3143348) | Cod sursa (job #3225689) | Cod sursa (job #465899)
Cod sursa(job #465899)
#include<stdio.h>
#include<string.h>
long a[1001][1001];
long b[1001][1001];
long k[1001];
long k2[1001];
struct MESAJ
{
long v,w;
};
MESAJ h[1001];
int main()
{
long n,m,i,j,x,y,u=0,ok=1,max,num=0,nu=0;
freopen("mesaj4.in","r",stdin);
freopen("mesaj4.out","w",stdout);
scanf("%ld%ld",&n,&m);
for (i=1;i<=m;i++)
{
scanf("%ld%ld",&x,&y);
a[x][y]=1;
a[y][x]=1;
}
for (i=1;i<=n;i++)
b[i][i]=1;
do
{
ok=1;
max=1000000000;
for (i=1;i<=n;i++)
{
num=0;
for (j=1;j<=n;j++)
{
if (b[i][j])
num++;
}
if (num<max)
{
max=num;
x=i;
}
}
num=max;
max=-1;
//memcpy(k,b[x],sizeof(k));
for (j=1;j<=n;j++)
{
if (a[x][j]==1)
{
memcpy(k,b[x],sizeof(k));
for (i=1;i<=n;i++)
{
k[i]=k[i]+b[j][i];
}
nu=0;
for (i=1;i<=n;i++)
{
if (k[i])
nu++;
}
if (nu>num)
{
if (nu>max)
{
max=nu;
ok=0;
y=j;
memcpy(k2,k,sizeof(k2));
}
}
}
}
if (ok==0)
{
memcpy(b[x],k2,sizeof(b[x]));
h[++u].v=x;
h[u].w=y;
}
}while (ok==0);
ok=0;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (b[i][j])
ok++;
if (ok==n*n)
{
printf("%ld\n",u);
for (i=1;i<=u;i++)
printf("%ld %ld\n",h[i].v,h[i].w);
}
else
printf("-1\n");
return 0;
}