| ||||||||||
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 |
这么经典的题目怎么就tle?#include<iostream> using namespace std; #define max 2005 int a[max],b[max]; inline int set(int n) { int i; for(i=0;i<n;i++) { a[i]=0; b[i]=-1; } return 0; } inline int find(int x) { int i; for(i=x;b[i]>=0;i=b[i]); while(i!=x) { int tmp=b[x]; b[x]=i; x=tmp; } return i; } inline int Union(int x,int y) { //if(x==y)return 0; int tmp=b[x]+b[y]; if(b[x]>b[y]) { b[y]=tmp; b[x]=y; } else { b[x]=tmp; b[y]=x; } return 0; } int main() { int sce; int s; int x,y; int n,m; int px,py; int flag=0; int i; scanf("%d",&sce); for(s=1;s<=sce;s++) { printf("Scenario #%d:\n",s); scanf("%d%d",&n,&m); flag=0; set(n); for(i=0;i<m;i++) { scanf("%d%d",&x,&y); px=find(x); py=find(y); if(px==py) { flag=1; break; } else { if(a[x]!=0) { int ax=find(a[x]); //if(ax==py)continue; Union(ax,py); //continue; } if(a[y]!=0) { int ay=find(a[y]); //if(ay==px)continue; Union(px,ay); } a[x]=py; a[y]=px; } } for(i=i+1;i<m;i++)scanf("%d%d",&x,&y); if(flag==1) { printf("Suspicious bugs found!\n"); } else { printf("No suspicious bugs found!\n"); } printf("\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