贴个模板,POJ 1511
2015-07-28 00:00
239 查看
N个点M条边,有向图,求1到其余各点的最短距离与各点到1的距离最短的路径总和。
N M 1E6
朴素必跪。。。
Dijkstra堆优化和SPFA应该都能过。
因为是有向图,求1到各点的距离,直接原图上跑SPFA。。
求各点回到1的距离,将边反转(from变to ,to 变from),在新图上再跑一遍SPFA。
8S的题,7S卡过,真尼玛2333333。。单纯的贴个SPFA的模板,以后说不定有用-- 。。
N M 1E6
朴素必跪。。。
Dijkstra堆优化和SPFA应该都能过。
因为是有向图,求1到各点的距离,直接原图上跑SPFA。。
求各点回到1的距离,将边反转(from变to ,to 变from),在新图上再跑一遍SPFA。
8S的题,7S卡过,真尼玛2333333。。单纯的贴个SPFA的模板,以后说不定有用-- 。。
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<queue> #include<vector> using namespace std; const int maxn=1000055; const long long inf=1000000005; bool Inq[maxn]; long long dis[maxn]; int A[maxn],B[maxn],C[maxn]; int n,m; struct edge{ int to; long long w; }; vector<edge> G[maxn]; void spfa(int src) { for(int i=0;i<maxn;i++) { dis[i]=inf; } dis[src]=0; memset(Inq,0,sizeof(Inq)); queue<int > q; Inq[src]=1; q.push(src); while(!q.empty()) { int cur=q.front(); q.pop(); Inq[cur]=0; for(int i=0;i<G[cur].size();i++) { edge& E=G[cur][i]; if(dis[E.to]>dis[cur]+E.w) { dis[E.to]=dis[cur]+E.w; if(Inq[E.to]==0) { q.push(E.to); Inq[E.to]=1; } } } } } int main() { ios_base::sync_with_stdio(false); int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(int i=0;i<=maxn;i++) { G[i].clear(); } for(int i=0;i<m;i++) { scanf("%I64d%I64d%I64d",&A[i],&B[i],&C[i]); G[A[i]].push_back((edge) {B[i],C[i]}); //G1[to].push_back((edge) {from,w}); } spfa(1); long long ans=0; for(int i=2;i<=n;i++) { ans+=dis[i]; } for(int i=0;i<=maxn;i++) { G[i].clear(); } for(int i=0;i<m;i++) { // scanf("%I64d%I64d%I64d",&A[i],&B[i],&C[i]); G[B[i]].push_back((edge) {A[i],C[i]}); //G1[to].push_back((edge) {from,w}); } spfa(1); for(int i=2;i<=n;i++) { ans+=dis[i]; } printf("%I64d\n",ans); } return 0; }
相关文章推荐
- 【Android 多语言切换简单实例分享】
- java获取本地操作系统进程列表
- Stringbuffer StringBuilder String
- 快速打开Oracle Listener以及OracleService的方法
- 涉案财物管理需要狠抓的几个环节
- ibatis调存储过程返回游标
- Java中LinkedList笔记
- PHP学习笔记(三)
- HelloWorld
- 项目实录之集成Spring MVC
- 项目实录之Maven工程搭建
- 最小化Spring XML配置
- Android5.0+(CoordinatorLayout)
- Android5.0+(CollapsingToolbarLayout)
- android5.0+(NavigationView)
- C#.net 简单任务调度平台 使用demo
- 获取IOS设备型号的代码
- ios项目最新真机调试教程
- 好的淘宝网站
- android-Fragment在生命周期做了什么?