1 solutions

  • 0
    @ 2024-12-10 23:27:11

    C :

    #include<stdio.h>
    #include<string.h>
    
    const int inf=1000000000;
    
    int n,g[10][10];
    
    void floyd()
    {
    	int i,j,k;
    	for(k=0;k<n;k++)
    		for(i=0;i<n;i++)
    			for(j=0;j<n;j++)
    				if(g[i][k]+g[k][j]<g[i][j])
    					g[i][j]=g[i][k]+g[k][j];
    }
    
    int main()
    {
    	int m,a,b,l,i,j;
    	while(scanf("%d%d",&n,&m)!=EOF)
    	{
    		for(i=0;i<n;i++)
    			for(j=0;j<n;j++)
    				g[i][j]=inf;
    		while(m--)
    		{
    			scanf("%d%d%d",&a,&b,&l);
    			g[a-1][b-1]=g[b-1][a-1]=l;
    		}
    		floyd();
    		scanf("%d%d",&a,&b);
    		if(g[a-1][b-1]==inf)
    			puts("No path");
    		else
    			printf("%d\n",g[a-1][b-1]);
    	}
    	return 0;
    }
    

    C++ :

    #include<stdio.h>
    #include<string.h>
    
    const int inf=1000000000;
    
    int n,g[10][10];
    
    void floyd()
    {
    	int i,j,k;
    	for(k=0;k<n;k++)
    		for(i=0;i<n;i++)
    			for(j=0;j<n;j++)
    				if(g[i][k]+g[k][j]<g[i][j])
    					g[i][j]=g[i][k]+g[k][j];
    }
    
    int main()
    {
    	int m,a,b,l,i,j;
    	while(scanf("%d%d",&n,&m)!=EOF)
    	{
    		for(i=0;i<n;i++)
    			for(j=0;j<n;j++)
    				g[i][j]=inf;
    		while(m--)
    		{
    			scanf("%d%d%d",&a,&b,&l);
    			g[a-1][b-1]=g[b-1][a-1]=l;
    		}
    		floyd();
    		scanf("%d%d",&a,&b);
    		if(g[a-1][b-1]==inf)
    			puts("No path");
    		else
    			printf("%d\n",g[a-1][b-1]);
    	}
    	return 0;
    }
    

    Java :

    import java.util.*;
    public class Main {
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		int m,n,a,b,l,x,y,k,i,j;
    		int[] [] diat=null;
    		while(in.hasNext()) {
    			n = in.nextInt();
    			m = in.nextInt();
    			diat = new int[n][n];
    			for(i=0;i<n;i++) {
    				for(j=0;j<n;j++) {
    					diat[i][j]=100;
    				}
    			}
    			for(int h=0;h<m;h++) {
    				a=in.nextInt();
    				b=in.nextInt();
    				l=in.nextInt();
    				diat[a-1][b-1]=l;
    				diat[b-1][a-1]=l;		
    			}
    			for(k=0;k<n;k++) {
    				for(i=0;i<n;i++) {
    					for(j=0;j<n;j++) {
    					if(diat[i][j]>(diat[i][k]+diat[k][j])){
    						diat[i][j]=diat[i][k]+diat[k][j];
    					}
    				}
    			}	
    		}
    			x=in.nextInt()-1;
    			y=in.nextInt()-1;
    			if(diat[x][y]!=100)
    				System.out.println(diat[x][y]);
    			else
    				System.out.println("No path");
    	}
    
    }
    }
    
    
    • 1

    Information

    ID
    608
    Time
    1000ms
    Memory
    32MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By