#include
#include
const int N=505;
#define inf 0x3f3f3f3f
using namespace std;
int mp[N][N];
int maxx[N]; // 记录救援数量
int num[N]; // 记录同一个路径的个数
int dis[N]; //最短路径
int visit[N]; // 记录是否被访问过
int pre[N]; // 记录前驱
int a[N]; //记录每个点的救援队数量
int n,m,s,d;
void dj(int start)
{
// 进行初始化
memset(visit,0,sizeof(visit));
for(int i=0; idis[k]+mp[j][k])
{
dis[j]=dis[k]+mp[j][k];
maxx[j]=maxx[k]+a[j];
pre[j]=k;
num[j]=num[k];
}
else if(dis[j]==dis[k]+mp[k][j])
{
num[j]+=num[k];
if(maxx[j]x;
// cout <<"打印路径"<>n>>m>>s>>d;
for(int i=0; i>a[i];
num[i]=1; //每一个点的最短路径初始化为1
}
memset(mp,inf,sizeof(mp));
for(int i=0; i>x>>y>>len;
mp[x][y]=min(mp[x][y],len);
mp[y][x]=min(mp[y][x],len);
}
dj(s);
cout <