标签:des style http color os io strong for ar
| Time Limit: 8000MS | Memory Limit: 262144K | |
| Total Submissions: 19527 | Accepted: 6375 |
Description
Input
Output
Sample Input
2 2 2 1 2 13 2 1 33 4 6 1 2 10 2 1 60 1 3 20 3 4 10 2 4 5 4 1 50
Sample Output
46 210
Source
点的个数太多,用邻接表存图。
#include"stdio.h"
#include"string.h"
#include"queue"
#include"iostream"
#include"algorithm"
using namespace std;
#define N 1000005
#define LL __int64
const int inf=0x7fffffff;
int head1[N],head2[N];
struct node
{
int u,v,d,next;
}e[N],g[N];
int t1,t2,n;
LL dis[N];
void add1(int u,int v,int d)
{
e[t1].u=u;
e[t1].v=v;
e[t1].d=d;
e[t1].next=head1[u];
head1[u]=t1++;
}
void add2(int u,int v,int d)
{
g[t2].u=u;
g[t2].v=v;
g[t2].d=d;
g[t2].next=head2[u];
head2[u]=t2++;
}
void bfs1()
{
int i,u=1,v;
queue<int>q;
for(i=1;i<=n;i++)
dis[i]=inf;
dis[u]=0;
q.push(u);
while(!q.empty())
{
u=q.front();
q.pop();
for(i=head1[u];i!=-1;i=e[i].next)
{
v=e[i].v;
if(dis[u]<inf&&dis[v]>dis[u]+e[i].d)
{
dis[v]=dis[u]+e[i].d;
q.push(v);
}
}
}
}
void bfs2()
{
int i,u=1,v;
queue<int>q;
for(i=1;i<=n;i++)
dis[i]=inf;
dis[u]=0;
q.push(u);
while(!q.empty())
{
u=q.front();
q.pop();
for(i=head2[u];i!=-1;i=g[i].next)
{
v=g[i].v;
if(dis[u]<inf&&dis[v]>dis[u]+g[i].d)
{
dis[v]=dis[u]+g[i].d;
q.push(v);
}
}
}
}
int main()
{
int i,m,u,v,d,T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
t1=t2=0;
memset(head1,-1,sizeof(head1));
memset(head2,-1,sizeof(head2));
for(i=0;i<m;i++)
{
scanf("%d%d%d",&u,&v,&d);
add1(u,v,d);
add2(v,u,d);
}
LL ans=0;
bfs1();
for(i=2;i<=n;i++)
ans+=dis[i];
bfs2();
for(i=2;i<=n;i++)
ans+=dis[i];
printf("%I64d\n",ans);
}
return 0;
}
poj 1511 Invitation Cards (spfa+邻接表)
标签:des style http color os io strong for ar
原文地址:http://blog.csdn.net/u011721440/article/details/38758463