| ||||||||||
| 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 | |||||||||
一次ac,贴代码留念一下#include<stdio.h>
#include<string.h>
int n,m;
int node[1001][1001];
int wire[501][2];
int index;
int cnt;
int stack[1001];
int snum;
int instack[1001];
int belong[1001];
int low[1001];
int DFN[1001];
int tarjan(int n)
{
stack[++snum]=n;
instack[n]=1;
low[n]=DFN[n]=++index;
for(int i=1;i<=node[n][0];i++)
{
if(!DFN[node[n][i]])
{
tarjan(node[n][i]);
if(low[node[n][i]]<low[n])
low[n]=low[node[n][i]];
}
else if(instack[node[n][i]]&&DFN[node[n][i]]<low[n])
{
low[n]=DFN[node[n][i]];
}
}
if(low[n]==DFN[n])
{
cnt++;
while(stack[snum]!=n)
{
belong[stack[snum]]=cnt;
snum--;
}
belong[n]=cnt;
snum--;
}
return 0;
}
int main()
{
int i,j;
int a,b;
int z;
int sum;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=1;i<=2*m;i++)
node[i][0]=0;
for(i=1;i<=m;i++)
{
scanf("%d%d",&wire[i][0],&wire[i][1]);
}
for(i=1;i<=m;i++)
for(j=i+1;j<=m;j++)
{
if(wire[i][0]>wire[i][1])
{
a=wire[i][1];
b=wire[i][0];
}
else
{
a=wire[i][0];
b=wire[i][1];
}
sum=0;
for(z=0;z<=1;z++)
{
if(wire[j][z]>a&&wire[j][z]<b)
sum++;
}
if(sum==1)
{
node[i][++node[i][0]]=j+m;
node[i+m][++node[i+m][0]]=j;
node[j][++node[j][0]]=i+m;
node[j+m][++node[j+m][0]]=i;
}
}
memset(DFN+1,0,sizeof(int)*m*2);
cnt=0;
index=0;
snum=0;
memset(instack,0,sizeof(instack));
for(i=1;i<=2*m;i++)
{
if(!DFN[i])
tarjan(i);
}
int flag=0;
for(i=1;i<=m;i++)
{
if(belong[i]==belong[i+m])
{
flag=1;
break;
}
}
if(flag)
printf("the evil panda is lying again\n");
else
printf("panda is telling the truth...\n");
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator