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:超了15ms。不知道怎么办了?帮忙看看吧 Posted by:plumage at 2005-04-09 13:54:57 > #include<iostream.h> > //#include<fstream.h> > > int t,n;//T and N > > class node > { > public: > int w; > int to; > node * next; > }; > > > node * array[1000]; > > node * p; > int length; > > void main() > { > length=0; > // fstream in("in.txt",ios::in|ios::out); > cin>>t>>n; > int r[1001][2];//r[i][0]==r[i].to r[i][1]==r[i].w > int i,j,temp; > int f,to,w; > > for(i=1;i<=t;i++)//input > { > cin>>f>>to>>w; > p=new node; > p->w=w; > p->to=to; > p->next=array[f]; > array[f]=p; > p=NULL; > } > > // in.close(); > > i=1; > > r[0][0]=0;//store the numbers of the record in r[] > while(1) > { > > for(p=array[i];p!=NULL;p=p->next) //update() > { > j=r[0][0]+1; //store record between 1 to n > w=p->w+length; //new weight from 1 to p.to > for(i=1;i<=r[0][0];i++) > { > > if(p->to==r[i][0]) > { > j=i; > if(w<r[i][1]) > { > r[i][1]=w; > if(p->to==n) > { > cout<<w<<endl; > return; > } > } > break; > } > > }//end for > if(j==r[0][0]+1) > { > r[j][0]=p->to; > r[j][1]=w; > r[0][0]++; > } > > } > > temp=1; > for(j=2;j<=r[0][0];j++) > { > // search the min > if(r[temp][1]>r[j][1]) > temp=j; > } //end search > > length=r[temp][1]; > i=r[temp][0]; > r[i+1][1]=r[r[0][0]][1]; > > r[0][0]--; > > if(i==n) > break; > } > ///////////end process > > cout<<length<<endl; > > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator