| ||||||||||
| 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:为什么是Run time error?In Reply To:为什么是Run time error? Posted by:sanpin at 2006-11-20 19:12:40 > /* simply using Dijkastra*/
> #include <iostream>
> #include <cstring>
> using namespace std;
>
> const int MAXSIZE=1010;
> const int MAXINT=5000;
> typedef struct
> {
> int next,dist;
> }NextPoint;
>
> int landMark[MAXSIZE][MAXSIZE]={0};//describe distance bettween land marks
> int close[MAXSIZE];// points to choose from
> bool marked[MAXSIZE]={false};// points already included
> int N,T;
>
> void Input()
> {
> cin>>N>>T;
> int i,j;
>
> while (T--)
> {
> cin>>i>>j;
> cin>>landMark[i][j];
> landMark[j][i]=landMark[i][j];
> }
> /* for (i=1;i<=N;i++)
> {
> for (j=1;j<=N;j++)
> cout<<landMark[i][j]<<' ';
> cout<<endl;
> }*/
> }
>
> void FindClose(NextPoint &p)
> {
> int i;
> int closestDist=MAXINT,closestPoint;
>
> for (i=1;i<=N;i++)
> {
> if (!marked[i]&&close[i]!=0&&close[i]<closestDist)
> {
> closestDist=close[i];
> closestPoint=i;
> }
> }
> // cout<<"Dis & add:"<<closestDist<<' '<<closestPoint<<endl;
> p.dist=closestDist;
> p.next=closestPoint;
> }
>
> void UpdateDist(NextPoint &p)
> {
> int i;
> for (i=1;i<=N;++i)
> {
> if (!marked[i]&&landMark[p.next][i]!=0&&(p.dist+landMark[p.next][i]<close[i]||close[i]==0))
> {
> close[i]=p.dist+landMark[p.next][i];
> }
> }
> }
>
>
> int main()
> {
> Input();
> int i;
> for (i=1;i<=N;i++)
> {
> close[i]=landMark[N][i];
> }
> NextPoint p;
> marked[N]=true; //added start point
>
> while (1)
> {
> FindClose(p);
> marked[p.next]=true;
> if (marked[1])
> break;
> UpdateDist(p);
> }
> cout<<p.dist<<endl;
> return 0;
> }
>
>
>
>
>
>
Input is not N T
It is T N
-_-;;;;;
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator