| ||||||||||
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 |
总是RE,哪位高手帮我看看错误在哪呀总是RE,哪位高手帮我看看错误在哪呀 #include<iostream> #include<cmath> using namespace std; struct seat { int x; int y; }; seat seats[1050];//网络中各个计算机的坐标 int computers[1050];//各个计算机之间的通信状态 bool repaired[1050];//是否已经修复过 int maxDistance;//两计算机能直接通信时,之间的最大距离 int find(int a)//查找a所在树的根结点,并压缩路径 { if (computers[a] < 0) return a; else { int root = find(computers[a]); computers[a] = root; return root; } } void Union(int a,int b)//把a所在的树并入b所在的树中 { int aRoot = find(a); int bRoot = find(b); computers[aRoot] = bRoot; } int main(void) { int n;//网络中计算机的总数 cin>>n>>maxDistance; memset(computers,-1,sizeof(int)*(1050)); memset(repaired,false,sizeof(bool)*(1050)); for(int i=1;i<=n;i++) { cin>>seats[i].x>>seats[i].y; } char op; int a,b; double space; int count = 1; while(cin>>op) { switch(op) { case 'O': cin>>a; if (a > 1001) break; repaired[a] = true; for(int i=1;i<a;i++) { if (repaired[i]) { space = sqrt(double((seats[i].x-seats[a].x)*(seats[i].x-seats[a].x) + (seats[i].y-seats[a].y)*(seats[i].y-seats[a].y))); if (space <= maxDistance) { Union(a,i); } }//end if (repaired[i]) }//end for for(int i=a+1;i<=n;i++) { if (i > 1001) break; if (repaired[i]) { space = sqrt(double((seats[i].x-seats[a].x)*(seats[i].x-seats[a].x) + (seats[i].y-seats[a].y)*(seats[i].y-seats[a].y))); if (space <= maxDistance) { Union(a,i); } }//end if (repaired[i]) }//end for break; case 'S': cin>>a>>b; if (a > 1001 || b > 1001) break; if (find(a) == find(b)) cout<<"SUCCESS"<<endl; else cout<<"FAIL"<<endl; break; }//end switch if (300000 < count) break; count++; }//end while return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator