HDOJ1874

来源:互联网 发布:哪个软件有汉仪丫丫体 编辑:程序博客网 时间:2024/04/30 23:20
#include"iostream"#include"map"#include"stdio.h"#include"string"#include"iomanip"#include"algorithm"using namespace std;const int num=205;const int inf=10000005;void floyd(int n,int c[][num]){ int i,j,k;for(k=0;k<n;k++)   for(i=0;i<n;i++)  for(j=0;j<n;j++)  c[i][j]=min(c[i][j],c[i][k]+c[k][j]);}int main(){//freopen("a.txt","r",stdin);int n,m;while(scanf("%d%d",&n,&m)==2){int c[num][num];int s,t,len,i,j;for(i=0;i<n;i++)for(j=0;j<n;j++)if(i==j)c[i][j]=0;elsec[i][j]=inf;for(i=0;i<m;i++){scanf("%d%d%d",&s,&t,&len);if(len<c[s][t])c[s][t]=c[t][s]=len;}int begin,end;cin>>begin>>end;floyd(n,c);if(c[begin][end]==inf)cout<<-1<<endl;elsecout<<c[begin][end]<<endl;}return 0;}

#include"iostream"#include"stdio.h"#include"algorithm"#include"deque"#include"queue"#include"functional"const int num=20;const int inf=999999;using namespace std;void dijkstra(int n,int v,int *dist,int c[][num]){int s[num];int i,j;for(i=1;i<=n;i++){dist[i]=c[v][i];s[i]=0;}s[v]=1;dist[v]=0;for(i=0;i<n-1;i++){int min=inf;int u=v;for(j=1;j<=n;j++){if(!s[j]&&dist[j]<min){min=dist[j];u=j;}}s[u]=1;for(j=1;j<=n;j++){if(!s[j]&&c[u][j]<inf)if(c[u][j]+dist[u]<dist[j])dist[j]=dist[u]+c[u][j];}}}int main(){freopen("a.txt","r",stdin);int n,m;while(scanf("%d%d",&n,&m)==2){int i,j;int dist[num],c[num][num];for(i=1;i<=num;i++){for(j=1;j<=num;j++)if(i==j) c[i][j]=0;else c[i][j]=inf;dist[i]=inf;}for(i=0;i<m;i++){int s,t,len;scanf("%d%d%d",&s,&t,&len);if(len<c[s+1][t+1])c[s+1][t+1]=c[t+1][s+1]=len;}int begin,end;cin>>begin>>end;dijkstra(n,begin+1,dist,c);if(dist[end+1]==inf)cout<<-1<<endl;else cout<<dist[end+1]<<endl;}return 0;}



0 0
原创粉丝点击