求助
#include<bits/stdc++.h>
int n, m;
int a[105][105], f[105][105];
int read()
{
char c = getchar();
int x = 0, flag = 1;
if(c == '-')
{
flag = -1;
c = getchar();
}
while('0' <= c && c <= '9')
{
x = x * 10 + (c - '0');
c = getchar();
}
return x * flag;
}
void write(int r)
{
if(r>9)
{
write(r/10);
}
putchar((r % 10) + '0');
}
int main(){
memset(a, 0x3f, sizeof(a));
n = read();m = read();
int r1, r2, r3;
for(int i = 1; i <= m; i ++)
{
r1 = read(); r2 = read(); r3 = read();
a[r1][r2] = std::min(a[r1][r2], r3);
a[r2][r1] = std::min(a[r2][r1], r3);
}
for(int j = 1; j <= n; j ++)
{
for(int k = 1 ; k <= n; k ++)
{
f[j][k] = a[j][k];
if(j == k)
{
f[j][k] = 0;
}
}
}
for(int i = 1; i <= n; i ++)
{
for(int j = 1; j <= n; j ++)
{
for(int k = 1 ; k <= n; k ++)
{
f[j][k] = std::min(f[j][k], f[j][i] + f[i][k]);
}
}
}
for(int i = 1; i <= n; i ++)
{
for(int j = 1; j <= n; j ++)
{
write(f[i][j]);
putchar(' ');
}
putchar('\n');
}
return 0;
}