11463 - Commandos

#include<cstdio>
#include<cstring>
#include<iostream>
#define Infinity 1000000
#define MAX 100
using namespace std;

int mat[MAX+5][MAX+5];

int koyta_building,koyta_road,i,j,k,test,a,b,s,d,tc=0,sum;

void Floyd()
{
    for(k=0; k<koyta_building; k++)
    {
        for(i=0; i<koyta_building; i++)
        {
            for(j=0; j<koyta_building; j++)
            {
                if(mat[i][j]>mat[i][k]+mat[k][j])
                {
                    mat[i][j]=mat[i][k]+mat[k][j];
                }
            }
        }
    }
}

int main()
{
    cin>>test;
    while(test--)
    {
        cin>>koyta_building>>koyta_road;
        for(i=0; i<koyta_road; i++)
        {
            cin>>a>>b;
            mat[a][b]=1;
            mat[b][a]=1;
        }
        cin>>s>>d;
        for(i=0;i<koyta_building;i++)
        {
            for(j=0;j<koyta_building;j++)
            {
                if(i!=j && mat[i][j]==0)
                {
                    mat[i][j]=Infinity;
                }
            }
        }

        Floyd();

        sum=0;

        for(i=0; i<koyta_building; i++)
        {
            sum=max(mat[s][i]+mat[i][d],sum);

        }
        printf("Case %d: %d\n",++tc,sum);
        memset(mat,0,sizeof(mat));
    }
    return 0;
}

0 comments: (+add yours?)