状态题目:传话
题目编号:272-传话 查看该题
状态: Unaccepted
测评机: Xeost[5]
得分: 30分
提交日期: 2008-8-22 1:41:00
有效耗时: 156毫秒
测试结果1: 通过本测试点|有效耗时47:ms
测试结果2: 通过本测试点|有效耗时62:ms
测试结果3: 输出过少|用户输出数据少于标准输出的50%[标准输出30位|选手输出3位]
测试结果4: 输出过少|用户输出数据少于标准输出的50%[标准输出1491位|选手输出3位]
测试结果5: 输出过少|用户输出数据少于标准输出的50%[标准输出1287位|选手输出3位]
测试结果6: 输出过少|用户输出数据少于标准输出的50%[标准输出2097位|选手输出3位]
测试结果7: 输出过少|用户输出数据少于标准输出的50%[标准输出1569位|选手输出3位]
测试结果8: 输出过少|用户输出数据少于标准输出的50%[标准输出2208位|选手输出3位]
测试结果9: 输出过少|用户输出数据少于标准输出的50%[标准输出519位|选手输出3位]
测试结果10: 通过本测试点|有效耗时47:ms
怎么会这样?超时倒有可能,为什么会少一两千位?
(原本只想试试数据……)
#include <stdio.h>
#define MAX 1000
int n,m,g[MAX][MAX]={0},in[MAX]={0},out[MAX]={0};
int flag,hash[MAX]={0},s;
void find(int v)
{
int i;
if(!flag) return;
if(g[v][s]==1)
{
hash[s]=1;
flag=0;
}
else if(flag)
{
for(i=0;i<n;i++)
{
if(out[i]>0&&g[v][i]==1&&flag)
find(i);
}
}
}
main()
{
int i,x,y;
scanf("%d%d",&n,&m);
for(i=0;i<m;i++)
{
scanf("%d%d",&x,&y);
x--;y--;
g[x][y]=1;
in[y]++;
out[x]++;
}
for(s=0;s<n;s++)
{
if(in[s]!=0)
{
flag=1;
find(s);
}
}
for(i=0;i<n;i++)
{
if(hash[i]==0)
printf("F\n");
else
printf("T\n");
}
}