From 8b10d9fc811ee89849a9b00466e1cfcfa59a26c8 Mon Sep 17 00:00:00 2001 From: Kirito <1362050620@qq.com> Date: Sat, 7 May 2016 19:20:06 +0800 Subject: [PATCH] Create 3946_cnblogs.cpp From http://www.cnblogs.com/20143605--pcx/p/5426398.html --- ZOJ/3946_cnblogs.cpp | 107 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 ZOJ/3946_cnblogs.cpp diff --git a/ZOJ/3946_cnblogs.cpp b/ZOJ/3946_cnblogs.cpp new file mode 100644 index 0000000..795aaab --- /dev/null +++ b/ZOJ/3946_cnblogs.cpp @@ -0,0 +1,107 @@ +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +using namespace std; +# define LL long long + +const int N=1005; +const int INF=1000000000; +const LL oo=1000000000000005; + +struct Edge +{ + int to,nxt; + LL c,d; +}; + +int n,m,cnt; +Edge e[N*200]; +LL d[N*100]; +int head[N*100]; +vectorpre[N*100]; + +void add(int u,int v,LL d,LL c) +{ + e[cnt].to=v; + e[cnt].d=d; + e[cnt].c=c; + e[cnt].nxt=head[u]; + head[u]=cnt++; +} + +void solve() +{ + for(int i=0;iq; + q.push(0); + while(!q.empty()) + { + int u=q.front(); + q.pop(); + for(int i=head[u];i!=-1;i=e[i].nxt){ + int v=e[i].to; + if(d[v]>d[u]+e[i].d){ + d[v]=d[u]+e[i].d; + q.push(v); + } + } + } + + q.push(0); + while(!q.empty()){ + int u=q.front(); + q.pop(); + for(int i=head[u];i!=-1;i=e[i].nxt){ + int v=e[i].to; + if(d[v]==d[u]+e[i].d){ + pre[v].push_back(i); + q.push(v); + } + } + } + + LL ans1=0,ans2=0; + for(int i=0;i