T755684 [ICPC 2017 Hong Kong R] Card collection

#include<iostream>
using namespace std;
const int INF=0x7fffff;
int m;
int p_o,p_t;
int dis[55];
int cheak[55];
int graph[55][55];
int main(){
	while(cin>>m){
		if(m=='\n') break;
		for(int i=1;i<=m;i++){
			dis[i]=INF;
		}
		cin>>p_o>>p_t;
		int a,b,c;
		while(cin>>a){
			if(a==0) break;
			cin>>b>>c;
			graph[a][b]=c;
			graph[b][a]=c;
		}
		dis[p_o]=0;
		for(int i=1;i<=m;i++){
			int mi=INF,mx;
			for(int j=1;j<=m;j++){
				if(dis[j]<mi&&cheak[j]==0){
					mi=dis[j];
					mx=j;
				}
			}
			cheak[mx]=1;
			for(int j=1;j<=m;j++){
				if(graph[mx][j]>0){
					if(mi+graph[mx][j]<dis[j]){
						dis[j]=mi+graph[mx][j];
					}
				}
			}
		}
		cout<<dis[p_t]<<endl;
		for(int i=1;i<=50;i++){
			dis[i]=0;
			cheak[i]=0;
		}
		for(int i=1;i<=50;i++){
			for(int j=1;j<=50;j++){
				graph[i][j]=0;
			}
		}
	}
	return 0;
}