POJ-1511 Invitation Cards(最短路)
2017-03-30 11:25
295 查看
POJ-1511
求源点a和到所有点b的a->b的最短路+b->a的最短路之和
建反向边,正向反向各dijkstra一次
求源点a和到所有点b的a->b的最短路+b->a的最短路之和
建反向边,正向反向各dijkstra一次
//求源点a和到所有点b的a->b的最短路+b->a的最短路之和 正向反向各dj一次 数组开小TLE1,没开longlong WA1 加读入挂快1000ms #include <cstdio> #include <algorithm> #include <queue> #include <cstring> #include <cmath> using namespace std; typedef pair<int,int> PII; const int MAXN=1e6+7; const int MAXM=1e6+7; const int INF=0x3f3f3f3f; int head[MAXN<<1],to[MAXM<<1],ne[MAXM<<1],wt[MAXM<<1],n,m,dist[MAXN<<1],ecnt,T; inline int read(){ int x=0; bool f=0; char ch=getchar(); while (ch<'0'||'9'<ch) f|=ch=='-', ch=getchar(); while ('0'<=ch && ch<='9') x=x*10+ch-'0', ch=getchar(); return f?-x:x; } void init() { ecnt=0; memset(head,0,sizeof(head)); } void addedge(int a,int b,int c) { ne[++ecnt]=head[a]; head[a]=ecnt; to[ecnt]=b; wt[ecnt]=c; } int vis[MAXN<<1]; priority_queue<PII> pq; void dijkstra(int s,int mode)//s为源点 { for(int i=1; i<=n; i++) dist[i+mode]=INF,vis[i+mode]=0; dist[s+mode]=0; pq.push(PII(0,s+mode)); while(!pq.empty()) { int fr=pq.top().second; pq.pop(); if(vis[fr])continue; vis[fr]=1; for(int k=head[fr]; k; k=ne[k]) { int v=to[k]; if(dist[v]>dist[fr]+wt[k]) { dist[v]=dist[fr]+wt[k]; pq.push(PII(-dist[v],v)); } } } } int main() { int ta,tb,tc; T=read(); while(T--) { n=read(); m=read(); init(); for(int i=1; i<=m; i++) { ta=read(),tb=read(),tc=read(); addedge(ta,tb,tc); addedge(tb+n,ta+n,tc); } long long ans=0; dijkstra(1,0); dijkstra(1,n); for(int i=1; i<=2*n; i++) ans+=dist[i]; printf("%lld\n",ans); } return 0; }
相关文章推荐
- POJ1511 Invitation Cards 【最短路】
- POJ-1511 Invitation Cards( 最短路,spfa )
- POJ 1511 Invitation Cards(最短路spfa算法)
- POJ 1511 Invitation Cards 【最短路,spfa算法,Dijkstra算法堆优化】
- POJ1511 SPFA模版 用边存的最短路
- poj 1511 Invitation Cards(spfa最短路)
- POJ 1511 Invitation Cards-2016.12月计科院赛(最短路)
- POJ 1511——Invitation Cards(最短路)
- 基础最短路 十 POJ 1511
- POJ 1511 Invitation Cards 求来回最短路(spfa)
- POJ 1511 Invitation Cards (最短路)
- POJ 1511 Invitation Cards(spfa最短路)
- POJ-1511 Invitation Cards (双向单源最短路)
- POJ - 1511 Invitation Cards (SPFA最短路)
- Invitation Cards POJ - 1511 最短路spfa
- 最短路练习10/poj/1511 Invitation Cards ,(两次spfa),(单源最短路,优先队列优化的Dijkstra)
- POJ-1511 Invitation Cards【最短路】
- Poj 3268 Silver Cow Party + Poj 1511 Invitation Cards (最短路反向建图)
- POJ 1511(邻接表和最短路 SPFA)
- POJ 1511 Invitation Cards【来回最短路+SPFA】