HDU 1535
来源:互联网 发布:js date 初始化 编辑:程序博客网 时间:2024/04/30 06:14
题意:求源点到其他各点的最短距离和,边是有向边
分析:正向反向分别建一个图,求2次SPFA,算距离,一次过感觉非常棒呐。
#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#define N 1000005#include<vector>#include<queue>#define INF 1<<30using namespace std;int p,cnt,head1[N],head2[N],vis[N],dis[N];struct edge{ int u,next,w;}e1[N],e2[N];void init(){ cnt=0; memset(head1,-1,sizeof(head1)); memset(head2,-1,sizeof(head2));}void addedge(int u,int v,int w){ e1[cnt].u=u;e1[cnt].w=w;e1[cnt].next=head1[v];head1[v]=cnt; e2[cnt].u=v;e2[cnt].w=w;e2[cnt].next=head2[u];head2[u]=cnt; cnt++;}int spfa1(int u){ int v,i,now; memset(vis,0,sizeof(vis)); queue<int>q; q.push(u); dis[u]=0; for(i=2;i<=p;i++){ dis[i]=INF; } vis[u]=1; while(!q.empty()){ now=q.front(); q.pop(); vis[now]=0; for(i=head1[now];i!=-1;i=e1[i].next){ v=e1[i].u; if(dis[now]+e1[i].w<dis[v]){ dis[v]=dis[now]+e1[i].w; if(!vis[v]){ q.push(v); vis[v]=1; } } } } int ret=0; for(i=1;i<=p;i++){ ret+=dis[i]; } return ret;}int spfa2(int u){ int v,i,now; memset(vis,0,sizeof(vis)); queue<int>q; q.push(u); dis[u]=0; for(i=2;i<=p;i++){ dis[i]=INF; } vis[u]=1; while(!q.empty()){ now=q.front(); q.pop(); vis[now]=0; for(i=head2[now];i!=-1;i=e2[i].next){ v=e2[i].u; if(dis[now]+e2[i].w<dis[v]){ dis[v]=dis[now]+e2[i].w; if(!vis[v]){ q.push(v); vis[v]=1; } } } } int ret=0; for(i=1;i<=p;i++){ ret+=dis[i]; } return ret;}int main(){ int t,u,v,w,q,ans; scanf("%d",&t); while(t--){ init(); scanf("%d%d",&p,&q); while(q--){ scanf("%d%d%d",&u,&v,&w); addedge(u,v,w); } ans=spfa1(1); ans+=spfa2(1); printf("%d\n",ans); } return 0;}
0 0
- HDU-1535
- HDU 1535
- HDU 1535
- hdu 1317+hdu 1535(SPFA)
- HDU 1535 Invitation Cards
- hdu 1535 Invitation Cards
- HDU 1535 Invitation Cards
- hdu 1535:Invitation Cards
- hdu 1535 spfa
- hdu 1535 Invitation Cards
- hdu 1535 Invitation Cards
- HDU 1535 Invitation Cards
- HDU 1535 Invitation Cards
- hdu 1535 Invitation Cards
- hdu
- hdu
- HDU
- hdu ()
- PHP GD库处理图片的相关常用函数(二)
- Android UI开发第二十四篇——Action Bar
- ADO查询站SQLServer,字段类型
- Spark 学习笔记
- ActionContext和ServletActionContext小结
- HDU 1535
- leetcode: Merge Two Sorted Lists
- CSharp_PivotGridControl和ChartControl简单实现<增强版>;
- (1)HTML5简介
- 堆和栈的区别
- 取文本中间
- 基于XMPP Openfire Smack 的IM通讯----监听别的用户发送过来的会话
- 算术级数
- 多说社会化评论插件PHP版网站登陆同步 单项登陆 网站用户登陆同步到多说登陆框