更该两个数值 结束不一样
https://loj.ac/p/10064
问题相关代码,请勿粘贴截图
#include<bits/stdc++.h>
using namespace std;
const int mod=2147483647,N=1111,inf=0x3f3f3f;//mod的值
typedef long long ll;
ll a[N][N],vis[N],book[N],n,m,ans=0;
ll cnt[N];
void dijkstra()
{
for(int i=1;i<=n;i++) vis[i]=a[1][i];
vis[1]=0;
book[1]=1;
for(int i=1;i<=n;i++){
int MIN=inf,k;
for(int j=1;j<=n;j++){
if(!book[j]&&vis[j]<MIN){
MIN=vis[j];
k=j;
}
}
book[k]=1;
for(int j=1;j<=n;j++){
if(vis[j]>vis[k]+a[k][j])
vis[j]=vis[k]+a[k][j];
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j) a[i][j]=0;
else a[i][j]=inf;
while(m--){
int x,y,z;
cin>>x>>y>>z;
if(a[x][y]>z)
a[x][y]=a[y][x]=z;
}
memset(book,0,sizeof(book));
dijkstra();
memset(cnt,0,sizeof(cnt));
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i!=j&&vis[j]==vis[i]+a[i][j])
cnt[j]++;
ans=1;
for(int i=1;i<=n;i++)
if(cnt[i]){
ans*=cnt[i];
ans%=mod;
}
cout<<ans<<endl;
}