| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
大家来弄个测试数据看看???郁闷并将长期郁闷,直到提交成功
#include "stdio.h"
#include <iostream>
using namespace std;
void init();
void doit();//主函数
void getV();//输入
int get(long a,long b);//获取最大公约数
bool go(int x,int y,int targe);//遍历
int n,m;//
int aa[200][200];//输入
bool cc[200][200];//
long bb[200];//
long count;
int do_x;
int main()
{
getV();
doit();
return 0;
}
void getV()
{
int i,j;
cin>>n>>m;
for (i = 0 ;i < n; i++)
{
for (j = 0; j < m; j++)
{
cin>>aa[i][j];
}
}
}
void doit()
{
int i;
long j;
for (i = 0; i < n; i++)
{
do_x = 1;
count = 0;
init();
if(go(i,do_x,i))
{
bb[i] = count;
}
else
{
cout<<"No one knows.\n";
return;
}
}
j = bb[0];
for (i = 1;i < n;i++)
{
j = j*bb[i]/get(j,bb[i]);
if( j > 1000000000)
{
cout<<"No one knows.\n";
return;
}
}
cout<<j;
}
int get(long a,long b)
{
if(b == 0)
{
return a;
}
else
return get(b,a%b);
}
bool go(int x,int y,int targe)
{
if(cc[x][y])
{
if (x == targe)
{
return true;
}
return false;
}
count++;
cc[x][y] = true;
do_x = (do_x-1+m)%m;
if(go(aa[x][y]-1,do_x,targe))
return true;
else
return false;
}
void init()
{
int i,j;
for (i=0;i<n;i++)
{
for (j =0;j<m;j++)
{
cc[i][j] = false;
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator