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 |
貌似你的spfa是错的In Reply To:为什么还是tle不停,我已经把队列改成栈了,谁能给组测试数据?(附我的代码) Posted by:xiaohuang_17 at 2009-09-18 20:13:11 > > 为什么还是tle不停,我已经把队列改成栈了,谁能给组测试数据?(附我的代码) > > > #include <iostream> > using namespace std; > #define M 30001 > #define inf 999999 > int dis[M]; > int signal[M]; > int n; > int Stack[M]; > int top; > struct edge > { > int u,v,w; > edge *next; > }*head[M]; > void addEdge(int u,int v,int w) > { > edge *ptr = new edge; > ptr->v = v; > ptr->w = w; > ptr->next = head[u]; > head[u] = ptr; > } > void SPFA(int source) > { > int i;int temp; > edge *p; > for(i=1;i<=n;++i) > { > dis[i]=inf; > signal[i]=false;//标志是否在队列中 > } > dis[source]=0; > Stack[top++]=source; > signal[source]=true; > while(top!=1) > { > temp=Stack[--top]; > signal[temp]=false; > for(p=head[temp];p;p=p->next) > { > if(dis[p->v]>dis[temp]+p->w) > { > dis[p->v]=dis[temp]+p->w; > Stack[top++]=p->v; > signal[p->v]=true; > } > } > } > } > > > > int main() > { > int m;int i,a,b,c; > while(scanf("%d%d",&n,&m)!=EOF) > { > for(i=1;i<=n;++i) > head[i]=NULL;//初始化 > top=1; > for(i=0;i<m;++i) > { > scanf("%d%d%d",&a,&b,&c); > addEdge(a,b,c); > } > SPFA(1); > printf("%d\n",dis[n]); > } > return 0; > } > > > 请大牛指正! Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator