比赛 20140321 评测结果 AAATTTTTTT
题目名称 考验 最终得分 30
用户昵称 醉江楼 运行时间 7.019 s
代码语言 C++ 内存使用 0.30 MiB
提交时间 2014-03-21 19:51:11
显示代码纯文本
#include<stdio.h>

#define MAXN 30

int n,m,k,map[MAXN][MAXN];

int use[MAXN];

int gcd(int a,int b)
{
	if (a==0) return b;

	int r=a%b;
	
	while (r)
	{
	a=b;
	b=r;
	r=a%b;
	}

	return b;
}

int gcc(int a,int b)
{
	if (a==0) return b;

	int x=a,y=b,r=a%b;
	
	while (r)
	{
	a=b;
	b=r;
	r=a%b;
	}

	return x*y/b;
}

void dfs(int x,int m)
{
	if (x==2) {
		k=gcc(k,m);
		return ;
	}
	use[x]=1;
	for (int i=1;i<=n;++i)
		if (map[x][i]&&!use[i])
		{
		dfs(i,gcd(m,map[x][i]));
		use[i]=0;
		}
}

int main()
{
	int i,j;

	freopen("testz.in","r",stdin);
	freopen("testz.out","w",stdout);

	scanf("%d",&n);

	for (i=1;i<=n;++i)
		for (j=1;j<=n;++j)
			scanf("%d",&map[i][j]);

	dfs(1,0);

	printf("%d\n",k);

	return 0;
}