| ||||||||||
| 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 | |||||||||
为什么还是tle不停,我已经把队列改成栈了,谁能给组测试数据?(附我的代码)
为什么还是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