标签:com style var push scan info hit margin mes
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <cstdlib> #include <queue> #define inf 0x3f3f3f3f #define maxc (n-1)*100 using namespace std; struct edge { int y,ne,c,t; }e[1000]; struct now { int p,c; }; int tot=0,n,m; struct data { int t,f; }d[105][10005]; int s,t,h[105],inq[105][10005]; void Addedge(int x,int y,int co,int ti) { tot++; e[tot].y=y; e[tot].ne=h[x]; h[x]=tot; e[tot].c=co; e[tot].t=ti; } void spfa() { for (int i=1;i<=n;i++) for (int j=0;j<=maxc;j++) d[i][j].f=0,inq[i][j]=0,d[i][j].t=inf; queue<now> q; now x; x.p=s,x.c=0; d[s][0].f=1,d[s][0].t=0; inq[s][0]=1; q.push(x); while (!q.empty()) { x=q.front(); q.pop(); inq[x.p][x.c]=0; for (int i=h[x.p];i;i=e[i].ne) { int y=e[i].y; int co=e[i].c+x.c; if (co>maxc) continue; if (d[y][co].t>d[x.p][x.c].t+e[i].t) { d[y][co].t=d[x.p][x.c].t+e[i].t; d[y][co].f=1; if (!inq[y][co]) { now aa; aa.p=y,aa.c=co; q.push(aa),inq[y][co]=1; } } } } } int main() { scanf("%d%d%d%d",&n,&m,&s,&t); for (int i=1;i<=m;i++) { int x,y,ti,co; scanf("%d%d%d%d",&x,&y,&co,&ti); Addedge(x,y,co,ti); Addedge(y,x,co,ti); } spfa(); int ans=0,minn=maxc+10; for (int i=0;i<=maxc;i++) { if (!d[t][i].f) continue; if (d[t][i].t>=minn) continue; minn=d[t][i].t; ans++; } cout<<ans<<endl; return 0; }
Sample Output2Hint
Bicriterial routing 双调路径 HYSBZ - 1375(分层最短路)
标签:com style var push scan info hit margin mes
原文地址:https://www.cnblogs.com/WTSRUVF/p/9742637.html