题目链接:
https://www.luogu.org/problemnew/show/P3905
思路:
1:开两个vector<pair<int,int> >,一个边的权值全部初始化为0,另一个正常按题目边的权值存
2:如果该路被破坏,那么就把正常存的数值copy到要用的vector<pair<int,int> >中,即保证没有被破坏的路的权值在计算的时候当作0来处理
3:跑spfa算法
算法:
spfa
#include <bits/stdc++.h>
using namespace std;
const int maxn=101;
vector<pair<int,int> >e[maxn],w[maxn];
int n,m,a,b,c,dg,s,t,d[maxn],ing[maxn];
inline void init()
{
for(int i=1;i<=n;i++)
{
ing[i]=0;
d[i]=1e9;
}
}
int main()
{
cin>>n>>m;
init();
for(int i=0;i<m;i++)
{
cin>>a>>b>>c;
e[a].push_back(make_pair(b,0));
e[b].push_back(make_pair(a,0))