10048 - Audiophobia

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAX 1005
#define Infinity 100000
using namespace std;

int mat[MAX][MAX];

int koyta_crossing,koyta_street,i,j,k,queries,c1,c2,d,from,to,tc=0,tag=0;
void Floyd()
{
    for(k=1; k<=koyta_crossing; k++)
    {
        for(i=1; i<=koyta_crossing; i++)
        {
            for(j=1; j<=koyta_crossing; j++)
            {
                if(mat[i][j]!=0 && mat[i][k]>0 && mat[k][j]>0)
                {
                    mat[i][j]=min(mat[i][j],max(mat[i][k],mat[k][j]));
                }
            }
        }
    }
}

int main()
{

    while(cin>>koyta_crossing>>koyta_street>>queries)
    {
        if(koyta_crossing==0 && koyta_street==0 && queries==0)
        {
            break;
        }
        for(i=1; i<=koyta_crossing; i++)
        {
            for(j=1; j<=koyta_crossing; j++)
            {
                if(i!=j && mat[i][j]==0)
                {
                    mat[i][j]=Infinity;
                }
            }
        }
        for(i=1; i<=koyta_street; i++)
        {
            cin>>c1>>c2>>d;
            mat[c1][c2]=d;
            mat[c2][c1]=d;
        }

        Floyd();

        if(tag)
        {
            printf("\n");
        }

        tag=1;
        printf("Case #%d\n",++tc);
        for(i=1; i<=queries; i++)
        {
            cin>>from>>to;
            if(mat[from][to]==Infinity)
            {
                printf("no path\n");
            }
            else
            {
                printf("%d\n",mat[from][to]);
            }
        }
        memset(mat,0,sizeof(mat));
    }
    return 0;
}

0 comments: (+add yours?)