| ||||||||||
| 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 | |||||||||
开始总是runtime error注意parent的指针,id不要是-1;
#include<iostream>
#define MAX 10005
using namespace std;
bool bf[MAX];
struct nodes{
nodes * parent;
int pid;
int cid;
int id;
};
int Find(nodes a,nodes b)
{
memset(bf,0,sizeof(bf));
while(1)
{
bf[a.id]=true;
if(a.parent == NULL)
{
bf[a.id]=true;
break;
}
a = *a.parent;
}
while(1)
{
if(bf[b.id]==true)
return b.id;
else
b=*b.parent;
}
}
int main()
{
int nums;
cin>>nums;
nodes set[MAX];
for(int i=0;i<nums;i++)
{
for(int i=0;i<MAX;i++)
{
set[i].parent = NULL;
set[i].id = -1;
set[i].pid = -1;
set[i].cid = -1;
}
int edge,parent,son;
int target1,target2;
cin>>edge;
for(int i=0;i<edge-1;i++)
{
cin>>parent>>son;
set[son].parent=&set[parent];
set[son].pid=parent;
set[son].id = son;
set[parent].cid = set[son].id;
}
for(int i=0;i<edge;i++)
{
if(set[i].pid==-1)
{
int child = set[i].cid;
set[i].id = set[child].pid;
set[i].parent = NULL;
set[i].pid = 0;
}
}
cin>>target1>>target2;
cout<<Find(set[target1],set[target2])<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator