记录编号 92701 评测结果 AAAAAAAAAA
题目名称 考验 最终得分 100
用户昵称 Gravatar雪狼 是否通过 通过
代码语言 C++ 运行时间 0.015 s
提交时间 2014-03-22 10:32:51 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#define REP(i,a,b) for(int i=a;i!=b+1;++i)
#define CLR(c,x) memset(c,x,sizeof(c))
#define maxn 30+10
#define INF ~0U>>2
using namespace std;

typedef long long LL;

void setIO(string s){
	string in=s+".in",out=s+".out";
	freopen(in.c_str(),"r",stdin);
	freopen(out.c_str(),"w",stdout);
}

struct edge{
	int from,to,dis;
};
int n,t;
LL ans;
vector<edge>E;
vector<int>G[maxn];
bool vis[maxn];

void addedge(int from,int to,int dis){
	//cout<<from<<' '<<to<<' '<<dis<<endl;
	E.push_back((edge){from,to,dis});
	G[from].push_back(E.size()-1);
}

void read(){
	scanf("%d",&n);
	
	//init_edge
	E.clear();
	REP(i,1,n)G[i].clear();
	
	REP(i,1,n)REP(j,1,n){
		scanf("%d",&t);
		if(t)addedge(i,j,t);
	}
}

LL GCD(LL a,LL b){return b==0?a:GCD(b,a%b);}
LL LCM(LL a,LL b){return a*b/GCD(b,a);}

void DFS(int x,LL a){
	if(ans%a==0)return; //powerful_treecut
	if(x==2){
		ans=LCM(ans,a);
		return;
	}
	REP(i,0,G[x].size()-1){
		edge &e=E[G[x][i]];
		if(!vis[e.to]){
			vis[e.to]=1;
			DFS(e.to,GCD(a,e.dis));
			vis[e.to]=0;
		}
	}
}

void work(){
	CLR(vis,0);vis[1]=1;ans=1;
	
	REP(i,0,G[1].size()-1)DFS(E[G[1][i]].to,E[G[1][i]].dis);
	printf("%lld",ans);
}

int main(){
	
	setIO("testz");
	
	read();
	work();
}