| ||||||||||
| 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。。。我3天了没过了。。。#include <iostream>
#include<stdio.h>
#define MAX 0xfffffff
#define MIN 0x-fffffff
#define NUM 3000
using namespace std;
__int64 V,E,border[NUM][NUM],midborder[NUM][NUM],tempborder[NUM][NUM],sum,sum2;
__int64 visit[NUM];
void copy()
{
__int64 i,j;
for(i=1;i<=V;i++)
for(j=1;j<=V;j++)
midborder[i][j]=border[i][j];
}
void SPFA1()
{
__int64 queue[NUM],data[NUM];
queue[1]=1;
__int64 i,j;
__int64* p1,*p2;
p1=&queue[1];
p2=p1+1;
sum=0;memset(visit,0,sizeof(visit));//初始化
for(i=1;i<=V;i++)
data[i]=MAX;
data[1]=0;
while(p1!=p2)
{
__int64 now=data[*p1];
if(p1+1==&queue[NUM-1]) p1=&queue[1];
for(i=1;i<=V;i++)
{
if(now+border[*p1][i]<data[i])
{
if(!visit[i])
{
data[i]=now+border[*p1][i];
visit[i]=1;
if(p2==&queue[NUM-1])
{
p2=&queue[1];
*p2=i;
}
else *(p2++)=i;
}
else data[i]=now+border[*p1][i];
}
}
visit[*p1]=0;
p1++;
}
for(i=1;i<=V;i++)
sum+=data[i];
}
void SPFA2()
{
__int64 queue[NUM],data[NUM];
queue[1]=1;
__int64 i,j;
__int64* p1,*p2;
p1=&queue[1];
p2=p1+1;
sum2=0;memset(visit,0,sizeof(visit));//初始化
for(i=1;i<=V;i++)
data[i]=MAX;
data[1]=0;
while(p1!=p2)
{
__int64 now=data[*p1];
if(p1+1==&queue[NUM-1]) p1=&queue[1];
for(i=1;i<=V;i++)
{
if(now+border[i][*p1]<data[i])
{
if(!visit[i])
{
data[i]=now+border[i][*p1];
visit[i]=1;
if(p2==&queue[NUM-1])
{
p2=&queue[1];
*p2=i;
}
else *(p2++)=i;
}
else data[i]=now+border[i][*p1];
}
}
visit[*p1]=0;
p1++;
}
for(i=1;i<=V;i++)
sum2+=data[i];
}
int main()
{
__int64 cases;
__int64 i,j,s,e,dis;
scanf("%I64d",&cases);
while(cases--)
{
sum2=0;
scanf("%I64d %I64d",&V,&E);
for(i=1;i<=V;i++)
for(j=1;j<=V;j++)
{
if(i==j) border[i][j]=0;
else border[i][j]=MAX;
}
for(i=1;i<=E;i++)
{
scanf("%I64d %I64d %I64d",&s,&e,&dis);
border[s][e]=dis;
}
copy();//保存
SPFA1();
SPFA2();
printf("%I64d\n",sum+sum2);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator