zoukankan      html  css  js  c++  java
  • POJ 1021 人品题

    报告见代码。。

      1 #include <iostream>
      2 #include <cstdio>
      3 #include <cstring>
      4 #include <algorithm>
      5 using namespace std;
      6 
      7 const int MAX=105;
      8 int dir[4][2]={1,0,-1,0,0,1,0,-1};
      9 int h,w,n;
     10 int maze[MAX][MAX];
     11 int maze2[MAX][MAX];
     12 struct{
     13     int x,y;
     14 }save[1000];
     15 int sa;
     16 int h1[1000];
     17 int h2[1000];
     18 
     19 void dfs(int i,int j,int (*p)[MAX]){
     20     p[i][j]=0;
     21     save[++sa].x=i;save[sa].y=j;
     22     for(int k=0;k<4;k++){
     23         int tx,ty;
     24         tx=i+dir[k][0];
     25         ty=j+dir[k][1];
     26         if(p[tx][ty]==1&&tx<h&&tx>=0&&ty<w&&ty>=0)
     27         dfs(tx,ty,p);
     28     }
     29 }
     30 
     31 void calculate(int *ha,int &top){   //HASH函数是各点对的距离的平方。。。也过。 
     32     int i,j,x=0,y=0; top++;
     33     for(i=1;i<=sa;i++){
     34         x=save[i].x;
     35         y=save[i].y;
     36         for(j=i+1;j<=sa;j++){
     37             int dx=abs(x-save[j].x);
     38             int dy=abs(y-save[j].y);
     39             int dis=dx*dx+dy*dy;
     40             ha[top]+=dis;
     41         }
     42     }
     43 }
     44 
     45 void slove(int (*p)[MAX],int *ha,int &top){
     46     int i,j;
     47     for(i=0;i<h;i++){
     48         for(j=0;j<w;j++){
     49             sa=0;
     50             if(p[i][j]==1){
     51             dfs(i,j,p);
     52             calculate(ha,top);
     53             }
     54         }
     55     }
     56 }
     57 
     58 int main(){
     59     int x,y,cas;
     60     scanf("%d",&cas);
     61     while(cas--){
     62         scanf("%d%d%d",&w,&h,&n);
     63         memset(maze,0,sizeof(maze));
     64         memset(maze2,0,sizeof(maze2));
     65         memset(h1,0,sizeof(h1));
     66         memset(h2,0,sizeof(h2));
     67         int top1=-1,top2=-1;
     68         for(int i=1;i<=n;i++){
     69             scanf("%d%d",&x,&y);
     70             maze[y][x]=1;
     71         }
     72     /*    for(int i=0;i<h;i++){
     73             for(int j=0;j<w;j++)
     74             printf("%d ",maze[i][j]);
     75             printf("
    ");
     76         }*/
     77         for(int i=1;i<=n;i++){
     78             scanf("%d%d",&x,&y);
     79             maze2[y][x]=1;
     80         }
     81      /*   for(int i=0;i<h;i++){
     82             for(int j=0;j<w;j++)
     83             printf("%d ",maze2[i][j]);
     84             printf("
    ");
     85         }*/
     86         slove(maze,h1,top1);
     87         slove(maze2,h2,top2);
     88         if(top1!=top2){
     89             printf("NO
    ");
     90             continue;
     91         }
     92         bool flag=true;
     93         sort(h1,h1+top1+1);
     94         sort(h2,h2+top2+1);
     95         for(int i=0;i<=top1;i++){
     96         //    printf("%d %d 
    ",h1[i],h2[i]);
     97             if(h1[i]!=h2[i]){
     98                 flag=false;
     99                 break;
    100             }
    101         }
    102         if(!flag)
    103         printf("NO
    ");
    104         else
    105         printf("YES
    ");
    106     }
    107     return 0;
    108 }
    View Code
  • 相关阅读:
    uview int类型数据对required校验不生效
    使用Nexus上传jar包
    centos上使用Selenium
    vue利用checkbox实现页面内容的刷新
    uview this.$u.post 数据格式不是json,报500错误
    nodejs添加某个模块后启动灰屏
    IDEA快捷命令,提高你拔刀的速度
    如何修改Linux服务器日期时间及时区
    使用exe4j生成exe文件并且附带jre运行环境
    写了一个Word和Excel读写有关的小工具,在此记录一下
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/3775026.html
Copyright © 2011-2022 走看看