poj_1021_1

有参考:琴空 http://blog.csdn.net/lencle/article/details/7206072


#include <iostream>

#include <string>

#include <algorithm>


using namespace std;


int dataProcess(int a[101][101], int sum, int x[], int y[],int b[], int n, int m){

    int temp = 1;

    int l,k;

    for (int i = 0; i < sum; i++) {

        l = x[i]; k = y[i];

        while ( 0 < l && a[l - 1][k] == 1) {//for left

            temp++;

            l--;

        }

        l = x[i]; k = y[i];

        while (l < n-1 && a[l + 1][k] == 1) {//for right

            temp++;

            l++;

        }

        l = x[i]; k = y[i];

        while ( k < m-1 && a[l][k + 1] == 1) {//for up

            temp++;

            k++;

        }

        l = x[i]; k = y[i];

        while ( 0 < k && a[l][k - 1] == 1) {//for down

            temp++;

            k--;

        }

        b[i] = temp;

        temp = 1;

    }

    return 0;

}


int  main(){

    int t = 0;

    int a[101][101];//点坐标

    int n, m, sum;// 点数目

    n = m = sum = 0;

    int x[101], y[101], b1[10100], b2[10100];//横坐标 纵坐标 点联通度

    int v = 0;

    int ans[101];

    

    memset(a, 0, sizeof(a));

    memset(b1, 0, sizeof(b1));

    memset(b2, 0, sizeof(b2));

    scanf("%d", &t);

    for (int j = 0; j < t; j++) {

        scanf("%d %d %d", &n, &m, &sum);

        

        for (int i = 0; i < sum; i++) {//图一

            scanf("%d %d", &x[i], &y[i]);

            a[x[i]][y[i]] = 1;

        }

        dataProcess(a, sum, x, y, b1, n, m);

        

        memset(a, 0, sizeof(a));

        memset(x, 0, sizeof(x));

        memset(y, 0, sizeof(y));

        for (int i = 0; i < sum; i++) {//图二

            scanf("%d %d", &x[i], &y[i]);

            a[x[i]][y[i]] = 1;

        }

        dataProcess(a, sum, x, y, b2, n, m);

        

        sort(b1, b1+sum);

        sort(b2, b2+sum);

        

        for (int i = 0; i < sum; i++) {

            if (b1[i] != b2[i]) {

                ans[j] = 0;

                v = 1;

                break;

            }

        }

        if(v == 0) ans[j] = 1;

    }

    

    for (int i = 0; i < t; i++) {

        if (ans[i] == 0) printf("NO\n");

        else printf("YES\n");

    }

    return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值