​传送门​

道路重建_#include

思路:

将未被毁坏的道路长度设置为0;

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int g[1010][1010];
int ma[1010][1010];
const int inf = 0x3f3f3f3f;
int n,m;
int dis[1010];
bool vis[1010];
void dij()
{
for(int k = 1; k <= n; k++)
{
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
g[i][j] = min(g[i][k]+g[k][j], g[i][j]);
}
}
}
}

int main()
{
cin>>n>>m;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
g[i][j] = i == j?0:inf;
while(m--)
{
int x,y;
cin>>x>>y;
int k;
cin>>k;
g[x][y] = g[y][x] = 0;
ma[x][y] = ma[y][x] = k;
}
int d;
cin>>d;
while(d--)
{
int x,y;
cin>>x>>y;
g[x][y] = g[y][x] = ma[x][y];
}

dij();
int x,y;
cin>>x>>y;
printf("%d\n",g[x][y]);
}