https://www.luogu.com.cn/problem/P3371
0分 QAQ
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
namespace q{
int n,m,s;//点的个数、有向边的个数、出发点的编号
const int maxn = 1e4+1;
int f[maxn][maxn] = {};
const int maxx = 2147483647;
void main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>m>>s;
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= n; ++j){
f[i][j] = maxx;
}
}
for(int i = 1; i <= m; ++i){
int x,y,z;
cin>>x>>y>>z;
f[x][y] = min(f[x][y],z);
}
for(int k = 1; k <= n; ++k){
for(int i = 1; i <= n; ++i){
if(i==k||f[i][k]==maxx)
{
continue;
}
for(int j = 1; j <= n; ++j){
f[i][j] = min(f[i][j],f[i][k]+f[k][j]);
}
}
}
f[s][s] = 0;
for(int i = 1; i <= n; ++i){
cout<<f[s][i]<<' ';
}
}
}
int main(){
q::main();
return 0;
}
//https://www.luogu.com.cn/problem/P3371