| ||||||||||
| 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:spfa+临接链表wa掉了,跪求大牛开导啊帮我看看哪错了?In Reply To:spfa+临接链表wa掉了,跪求大牛开导啊帮我看看哪错了? Posted by:zry918 at 2011-07-07 16:49:58 > #include <iostream>
> #include <queue>
> using namespace std;
> const long lmax = 1000000000;
> const long edge_maxn = 30005; //边的最大上限
> const long point_maxn = 1500005; //点的最大上限
> struct node
> {/*node存储边,一个edge代表一条边*/
> int v; //终点位置
> int w; //权值
> int next; //同一起点的下一条边存储在edge数组中的位置
> }edge[edge_maxn];
> int pre[point_maxn]; //以该点为起点的第一条边存储在edge数组中的位置
> int n; //点的数量
> int m; //边的数量
> queue<int> Q;
> int dirs[point_maxn];
> bool vis[point_maxn];
> void Init()
> {
> memset(pre,-1,sizeof(pre));
> int Index = 1;
> int i,j,flag;
> int x,y,w;
> for(i=0;i<m;i++)
> {
> scanf("%d%d%d",&x,&y,&w);
> for(flag=0,j=pre[x];j!=-1;j=edge[j].next)
> {//重边的情况
> if(y == edge[j].v)
> {
> if(w < edge[j].w)
> edge[j].w = w;
> flag = 1;
> break;
> }
> }
> if(flag == 1)
> continue;
> edge[Index].v = y;
> edge[Index].w = w;
> edge[Index].next = pre[x]; //保存x起点的上一条边在edge数组中的位置
> pre[x] = Index++; //位置更新
> }
> }
> void print(int end)
> {
> printf("%d\n",dirs[end]);
> }
> void SPFA()
> {
> int start = 1;
> int end = n;
> while(!Q.empty())
> {
> Q.pop();
> }
> memset(vis,0,sizeof(vis)); //初始每个点的访问记录
> fill(dirs,dirs+point_maxn,lmax);
>
> dirs[start] = 0;
> vis[start] = 1;
> Q.push(start);
> while(!Q.empty())
> {
> int top = Q.front(); //边的起点
> Q.pop();
> vis[top] = 0;
> for(int j=pre[top];j!=-1;j=edge[j].next)
> {
> int e = edge[j].v; //边的终点
> if(dirs[e] > edge[j].w + dirs[top])
> {
> dirs[e] = edge[j].w + dirs[top];
> if(!vis[e])
> {
> Q.push(e);
> vis[e] = 1;
> }
> }
> }
> }
> print(end);
> }
> int main()
> {
> while(scanf("%d%d",&n,&m)!=EOF )
> {
> Init();
> SPFA();
> }
> //system("pause");
> return 0;
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator