hdu 1535 Invitation Cards(最短路)
来源:互联网 发布:hr面试java常问的问题 编辑:程序博客网 时间:2024/06/10 09:01
题意:给出n个点的有向图,要求求出从源点1到各个点的最短路的和与从各个点到1的最短路的和。
思路:这题还蛮巧妙的,从源点到各个点的最短路好求,至于其它点到源点的最短路可以反向建图,然后再从源点开始做个最短路就行了,这样就相当于从源点“倒着走”走到所有点。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<map>#include<queue>#include<stack>#include<cmath>#include<vector>#define inf 0x3f3f3f3f#define Inf 0x3FFFFFFFFFFFFFFFLL#define eps 1e-9#define pi acos(-1.0)using namespace std;typedef long long ll;const int maxn=1000000+10;struct Edge{ int v,w,next;};Edge edges[maxn<<1];int head[maxn<<1],nEdge;int d[maxn<<1],n,m;bool vis[maxn<<1];void AddEdge(int u,int v,int w){ nEdge++; edges[nEdge].v=v; edges[nEdge].w=w; edges[nEdge].next=head[u]; head[u]=nEdge;}void spfa(){ for(int i=1;i<=n*2;++i) d[i]=inf; d[1]=d[n+1]=0; queue<int>q; q.push(1); q.push(n+1); while(!q.empty()) { int u=q.front();q.pop(); vis[u]=false; for(int k=head[u];k!=-1;k=edges[k].next) { int v=edges[k].v; if(d[v]>d[u]+edges[k].w) { d[v]=d[u]+edges[k].w; if(!vis[v]) {vis[v]=true;q.push(v);} } } }}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(head,0xff,sizeof(head)); memset(vis,0,sizeof(vis)); nEdge=-1; int u,v,w; for(int i=0;i<m;++i) { scanf("%d%d%d",&u,&v,&w); AddEdge(u,v,w); AddEdge(v+n,u+n,w); } spfa(); int ans=0; for(int i=1;i<=n*2;++i) ans+=d[i]; printf("%d\n",ans); } return 0;}
- hdu 1535 Invitation Cards(最短路)
- 【HDU】1535 Invitation Cards 最短路
- HDU 1535 Invitation Cards 2次Dijkstra来回最短路
- HDU 1535 Invitation Cards (最短路 建正反图)
- hdu 1535 Invitation Cards 最短路spfa+逆向建图
- 【最短路】 HDOJ 1535 Invitation Cards
- HDOJ 1535 Invitation Cards 【最短路 SPFA】
- HDU 1535 Invitation Cards 单源最短路
- HDU 1535 Invitation Cards【SPFA最短路】【正反向建边求单源最短路之和】
- POJ1511 Invitation Cards 【最短路】
- Invitation Cards(最短路)
- POJ1511 Invitation Cards(最短路)
- POJ1511-Invitation Cards-最短路
- HDU 1535 Invitation Cards(多源点到单点最短路)
- hdu 1535 Invitation Cards(有向图的来回最短路,要反向建图)
- hdu 1535 Invitation Cards spfa求最短路,反向建图再来一次
- HDU 1535 Invitation Cards
- hdu 1535 Invitation Cards
- linux 编译段错误解决方法
- LaTex的一些技巧
- vim 横行和纵向分割
- Android 头 5 年最重要的 20 个里程碑
- sqlite3 语句
- hdu 1535 Invitation Cards(最短路)
- Jquery鼠标控制图片轮播,animate()动画队列,stop()清除队列
- 用批处理备份交换机的日志文件
- java多线程
- Java Eclipse Shortcuts: Tips and Tricks for the Eclipse Java IDE
- UITableView 取消选中行高亮
- tar.gz的解压和安装
- 编程总结,在MFC下编程
- 循环输出字符字符串