1 solutions
-
0
C :
#include<stdio.h> const int inf=1000000000; int g[101][101],mini[101]; void dijkstra(int n,int g[][101],int s,int* mini) { int v[101],i,j,k; for(i=1;i<=n;i++) { mini[i]=inf; v[i]=0; } for(mini[s]=0,j=1;j<=n;j++) { for(k=-1,i=1;i<=n;i++) if(!v[i]&&(k==-1||mini[i]<mini[k])) k=i; for(v[k]=1,i=1;i<=n;i++) if(!v[i]&&mini[k]+g[k][i]<mini[i]) mini[i]=mini[k]+g[k][i]; } } int main() { int n,m,a,b,c,i,j; while(scanf("%d%d",&n,&m)!=EOF,n||m) { for(i=1;i<=n;i++) for(j=1;j<=n;j++) g[i][j]=inf; while(m--) { scanf("%d%d%d",&a,&b,&c); if(g[a][b]>c) g[a][b]=g[b][a]=c; } dijkstra(n,g,1,mini); printf("%d\n",mini[n]); } return 0; }
C++ :
#include<stdio.h> const int inf=1000000000; int g[101][101],mini[101]; void dijkstra(int n,int g[][101],int s,int* mini) { int v[101],i,j,k; for(i=1;i<=n;i++) { mini[i]=inf; v[i]=0; } for(mini[s]=0,j=1;j<=n;j++) { for(k=-1,i=1;i<=n;i++) if(!v[i]&&(k==-1||mini[i]<mini[k])) k=i; for(v[k]=1,i=1;i<=n;i++) if(!v[i]&&mini[k]+g[k][i]<mini[i]) mini[i]=mini[k]+g[k][i]; } } int main() { int n,m,a,b,c,i,j; while(scanf("%d%d",&n,&m)!=EOF,n||m) { for(i=1;i<=n;i++) for(j=1;j<=n;j++) g[i][j]=inf; while(m--) { scanf("%d%d%d",&a,&b,&c); if(g[a][b]>c) g[a][b]=g[b][a]=c; } dijkstra(n,g,1,mini); printf("%d\n",mini[n]); } return 0; }
Java :
import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Scanner jin=new Scanner(System.in); int N,M; int dist[][]=new int[105][105]; while((N=jin.nextInt())!=0&&(M=jin.nextInt())!=0){ for(int i=1;i<=N;i++) for(int j=1;j<=N;j++) dist[i][j]=i==j?0:10005; for(int i=0;i<M;i++){ int A=jin.nextInt(),B=jin.nextInt(),C=jin.nextInt(); dist[B][A]=dist[A][B]=Math.min(C,dist[A][B]); } for(int k=1;k<=N;k++) for(int i=1;i<=N;i++) for(int j=1;j<=N;j++) dist[j][i]=dist[i][j]=Math.min(dist[i][j], dist[i][k]+dist[k][j]); System.out.println(dist[1][N]); } } }
- 1
Information
- ID
- 573
- Time
- 1000ms
- Memory
- 32MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By