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:我竟然用宽搜写了一个,*^◎^*In Reply To:我竟然用宽搜写了一个,*^◎^* Posted by:TSERROF at 2012-12-02 22:36:36 这个改进版可以显示路径 struct Point { int point,journey; string trace; }; int BFS(int startp,int endp) { Point p; queue<Point>q; p.journey=0,p.point=startp,p.trace.append(to_string(p.point)); q.push(p); int record[10000]; fill(record,record+vertex+1,0); string ans; int min=0xffff; record[startp]=1; while(!q.empty()) { p=q.front(); q.pop(); if(p.point==endp && min>p.journey) { min=p.journey; ans=p.trace; } for(int i=1;i<=vertex;++i) //搜索每一个可能和p相邻的顶点 { if(i==p.point )continue; if(matrix[i][p.point]) //如果有边 { if(record[i]!=0 && p.journey+matrix[i][p.point]>record[i])continue; record[i]=p.journey+matrix[i][p.point]; Point temp=p; temp.journey=record[i],temp.point=i,temp.trace.append(to_string(i)); q.push(temp); } } } for(unsigned int i=0;i<ans.size();++i) { if(i)cout<<"->"; cout<<ans[i]; } cout<<endl; return min; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator