예제 #1
0
int main()
{
    int square[41][41];
    int testcases;
    int i,j;
    int hatch,side;
    double min;
    int x,y;
    int flag;
    scanf("%d",&testcases);
    while(testcases--)
    {
        memset(square,0,sizeof(square));
        flag=0;
        i=j=0;
        scanf("%d%d",&side,&hatch);
        for(i=0; i<hatch; i++)
        {
            scanf("%d%d",&x,&y);
            square[x][y]=1;
        }
        for(i=0; i<side; i++)
        {
            for(j=0; j<side; j++)
            {
                if(!square[i][j])
                {
                    min=mindis(square,i,j,side);
                    if(!(min>i||min>j||min>side-i||min>side-j))
                    {
                        printf("%d %d\n",i,j);
                        flag=1;
                        break;
                    }
                }
            }
            if(flag==1)
                break;
        }
        if(i==side&&j==side)
            printf("poodle\n");
    }
    return 0;
}
예제 #2
0
void dijsktra(int src,int arr[20][20],int n)
{
    int dist[n];
    int i,j;
    for(i=0;i<n;i++){
        dist[i] = INT_MAX;
    }
    int sptSet[n];
    for(i=0;i<n;i++){
        sptSet[i] = 0;
    }
    dist[src] = 0;
    for(i=0;i<n-1;i++){
        int u = mindis(dist,sptSet,n);
        sptSet[u] = 1;
        for(j=0;j<n;j++){
            if(!sptSet[j] && arr[u][j] && dist[j]>(dist[u]+ arr[u][j])){
                dist[j] = dist[u]+arr[u][j];
            }
        }
    }
    print(dist,n);

}