struct Folyd {
ll mp[N][N];
ll way[N][N];
double ans[N];
int n, m;
void init()
{
memset(mp, 0x3f, sizeof mp);
cin >> n >> m;
while (m--)
{
int a, b, c; cin >> a >> b >> c;
mp[a][b] = c;
mp[b][a] = c;
way[a][b] = 1;
way[b][a] = 1;
}
}
void folyd()
{
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for (int j = 1; j <= n; j++)
{
if (i != j && j != k && i != k)
{
if (mp[i][j] == mp[i][k] + mp[k][j])
{
way[i][j] += way[i][k] * way[k][j];
}
else if (mp[i][j] > mp[i][k] + mp[k][j])
{
way[i][j] = way[i][k] * way[k][j];
mp[i][j] = mp[i][k] + mp[k][j];
}
}
}
}
}folyd;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39