讨论 / 所以说90分一个点无输出是怎么回事
kyu_115s 2013-04-27 05:17:00
点我顶贴 收藏 删除
测评机: Xeost[5]

得分: 90分

提交日期: 2011-11-8 20:46:00

有效耗时: 750毫秒

测试结果1: 选手程序无输出

测试结果2: 通过本测试点|有效耗时62ms

测试结果3: 通过本测试点|有效耗时47ms

测试结果4: 通过本测试点|有效耗时63ms

测试结果5: 通过本测试点|有效耗时62ms

测试结果6: 通过本测试点|有效耗时63ms

测试结果7: 通过本测试点|有效耗时62ms

测试结果8: 通过本测试点|有效耗时94ms

测试结果9: 通过本测试点|有效耗时94ms

测试结果10: 通过本测试点|有效耗时203ms

就算是太慢了也是超时啊。

类似Floyd的方法。

#include<iostream>

#include<stdio.h>

#include<string.h>

#include<fstream>

#define fin cin

//#define fout cout

using namespace std;

int n;

bool map[505][505]={},meet[1005][1005]={};

int main()

{

//fstream fin,fout;fin.open("in.in",ios::in),fout.open("out.out",ios::out);

fin>>n;

int i,k,j,cnt=0,temp;

bool flag=1;

for(i=0;i<n;++i)

for(j=0;j<n;++j)

{

fin>>map[i][j];

map[i][j+n]=map[i+n][j]=map[i+n][j+n]=map[i][j];

}

for(i=0;i<(n<<1);++i)

meet[i][i+1]=meet[i+1][i]=1;

for(i=(n<<1)-1;i>-1;--i)

for(j=i+2;j<=i+n;++j)if(!meet[i][j])

for(k=i+1;k<j;++k)

if(meet[i][k])if(meet[k][j])

if(map[i][k]||map[j][k])

meet[i][j]=1;

for(i=0;i<n;++i)

if(meet[i][i+n])

++cnt;

cout<<cnt<<endl;

for(i=0;i<n;++i)

if(meet[i][i+n])

cout<<i+1<<endl;

//system("PAUSE");

return 0;

}

#1 107229HR@2013-04-27 05:17:00
回复 删除
再交一次

RT

查看更多回复
提交回复