| ||||||||||
| 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 | |||||||||
超了15ms。不知道怎么办了?帮忙看看吧#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