567 - Risk

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std;

int mat[25][25];

int cost[25],color[25];

queue<int>Q;

int n,a,koyta_pair,i,j,k,counter,u,Start,End,tc=0;

int main()
{
    while(cin>>n)
    {
        counter=0;
        for(k=1;k<=19;k++)
        {
            for(i=1; i<=n; i++)
            {
                cin>>a;
                mat[k][a]=1;
                mat[a][k]=1;
            }
            if(k==19)
            {
                break;
            }
            cin>>n;
        }
        cin>>koyta_pair;
        printf("Test Set #%d\n",++tc);
        for(i=1; i<=koyta_pair; i++)
        {
            cin>>Start>>End;
            Q.push(Start);
            color[Start]=1;
            while(!Q.empty())
            {
                u=Q.front();
                for(j=1; j<=20; j++)
                {
                    if(mat[u][j]==1 && color[j]!=1)
                    {
                        color[j]=1;
                        cost[j]=cost[u]+1;
                        Q.push(j);
                    }
                }
                Q.pop();
            }
            printf("%2d to %2d: %d\n",Start,End,cost[End]);
            memset(cost,0,sizeof(cost));
            memset(color,0,sizeof(color));
        }
        printf("\n");
        memset(mat,0,sizeof(mat));
        memset(cost,0,sizeof(cost));
        memset(color,0,sizeof(color));
    }
    return 0;
}

0 comments: (+add yours?)