/*
5 5
2 3 2
1 2 -3
1 5 5
4 5 2
3 4 3
*/
#include<iostream>
using namespace std;
int main(){
int u[10],v[10],w[10],dis[10]={0};
int i,j,k;
int n,m;
int inf=9999;
cin>>n>>m;
//读入数据
for(i=1;i<=m;++i)
cin>>u[i]>>v[i]>>w[i];
//dis数组初始化
for(i=1;i<=n;++i)
dis[i]=inf;
dis[1]=0;
//Bellman
for(i=1;i<=n-1;++i)
for(j=1;j<=m;++j)
if(dis[v[j]]>dis[u[j]]+w[j])
dis[v[j]]=dis[u[j]]+w[j];
//输出数据
for(i=1;i<=n;++i)
cout<<dis[i]<<" ";
return 0;
5 5
2 3 2
1 2 -3
1 5 5
4 5 2
3 4 3
*/
#include<iostream>
using namespace std;
int main(){
int u[10],v[10],w[10],dis[10]={0};
int i,j,k;
int n,m;
int inf=9999;
cin>>n>>m;
//读入数据
for(i=1;i<=m;++i)
cin>>u[i]>>v[i]>>w[i];
//dis数组初始化
for(i=1;i<=n;++i)
dis[i]=inf;
dis[1]=0;
//Bellman
for(i=1;i<=n-1;++i)
for(j=1;j<=m;++j)
if(dis[v[j]]>dis[u[j]]+w[j])
dis[v[j]]=dis[u[j]]+w[j];
//输出数据
for(i=1;i<=n;++i)
cout<<dis[i]<<" ";
return 0;
}
//改进,提前跳出
/*
5 5
2 3 2
1 2 -3
1 5 5
4 5 2
3 4 3
*/
#include<iostream>
using namespace std;
int main(){
int u[10],v[10],w[10],dis[10]={0};
int i,j,k;
int n,m;
int inf=9999;
bool bo=0;
cin>>n>>m;
//读入数据
for(i=1;i<=m;++i)
cin>>u[i]>>v[i]>>w[i];
//dis数组初始化
for(i=1;i<=n;++i)
dis[i]=inf;
dis[1]=0;
//Bellman
for(i=1;i<=n-1;++i){
bo=0;
for(j=1;j<=m;++j){
if(dis[v[j]]>dis[u[j]]+w[j]){
dis[v[j]]=dis[u[j]]+w[j];
bo=1;
}
}
if(bo=0) break;
}
//输出数据
for(i=1;i<=n;++i)
cout<<dis[i]<<" ";
return 0;
}
//注意,flag的位置