題目:統計最短路,及次短路的路徑數
對於每次更新:
1.新路徑比最短路徑長度要小,那麼最短路和次短路的長度和次數都要更新。
2.新路徑等於最短路的長度,那麼只需要更新最短路的條數。
3.新路徑比最短路要長但是比次短路要短,那麼需要更新次短路的長度和條數。
4.新路徑等於次短路徑的長度,那麼只需要更新次短路徑的條數。
#include
using
namespace std;
typedef
long
long ll;
const ll inf=
1e9;
const ll mod=
1e9+7;
const
int maxn=
1e6;
const
int n=
3005
;int head[maxn]
,to[maxn]
,nex[maxn]
,kp[n]
,vis[n][3
],x,y,z,t,s,t,n,m,k;
int dis[n][3
],w[maxn]
,dp[n][3
];struct node};
void
add(
int a,
int b,
int c)
void
dij(
int s));
while
(!p.
empty()
)); dis[y][1
]=dis[now]
[f]+w[i]
; dp[y][1
]=dp[now]
[f];
p.push
((node));
}else
if(dis[y][1
]==dis[now]
[f]+w[i]
)else
if(dis[y][2
]>dis[now]
[f]+w[i]))
;}else
if(dis[y][2
]==dis[now]
[f]+w[i])}
}}intmain()
scanf
("%d%d"
,&s,
&t);
dij(s)
;int ans=dp[t][1
];if(dis[t][2
]-1==dis[t][1
])ans+
=dp[t][2
];printf
("%d\n"
,ans);}
}
最短路徑統計
noip2017 考了這個 不過比這個不知道高到 去了 但是畢竟可以用這個混到30分的呀.大致有兩種做法,可以spfa,也可以寫dijkstra 重要的地方都差不多,即用乙個陣列cnt i 表示 dis i 有多少種走法 dijkstra很好想,每次都是走的最短路直接更新即可 spfa因為可能會反覆...
XJOJ 路徑數 最短路 最短路路徑數量
題目大意 euphemia到乙個n n的藥草田裡採藥,她從左上角的格仔田 第一行,第一列 出發,要到達右下角 第n行,第n列 的格仔田,每次她可以走到與當前格仔有邊相鄰的格仔去,但她不會走已經走過的格仔,而且出於對美的要求,她走過的路徑是關於 左下 右上 對角線對稱的。由於地勢不同,在每個格仔田採藥...
POJ 3255 次短路徑
題意 給你無向帶權圖,求次短路徑 題解 加乙個次短路的陣列,用於距記錄源點到此點的次短路長度,注意初始化是源點到自己的次短路是極大值 接著再使用dijkstra演算法,它是每次選用現在連上 記錄了 的點與其他點的最小權值的邊去更新其他所有的點 就是在dij的演算法上進行簡單的修改,需要修改的是每次最...