简单的bfs搜索题,对每个初始的水滴依次扩展,当达到规定步数时跳出。这题还是有坑点的,对于每个初始的水滴,已经访问过的位置不再访问,但是对于不同的水滴,别的水滴已经访问过的,对于当前水滴来说可能还要访问,才能使扩展的范围最大。

#include<iostream>
#include<string>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
struct node
{int a;int b;int step;
}N[104];
int vis[2000][2000];
int x,y,t,l,w;
int x1,x2,yy1,y2;
int dir[4][2]={{-1,0},{1,0},{0,1},{0,-1}};void bfs(int bx,int by,int mark)
{node k;queue<node> q;k.a=bx,k.b=by,k.step=0;q.push(k);while(!q.empty()){node temp=q.front();q.pop();if(temp.step>=t)//时间够了,跳出 return ;for(int i=0;i<4;i++){node cur;int xx=temp.a+dir[i][0];int yy=temp.b+dir[i][1];if(xx>=1&&xx<=x&&yy>=1&yy<=y&&(vis[xx][yy]!=-1&&vis[xx][yy]!=mark)){cur.a=xx,cur.b=yy;cur.step=temp.step+1;if(cur.step>=t)return ;else{  q.push(cur);vis[xx][yy]=mark;//当前水源下不要走重复的 }}}}
}
int main()
{while(cin>>x>>y>>t>>l>>w){if(x==-1)break;memset(vis,0,sizeof(vis));for(int i=1;i<=l;i++)cin>>N[i].a>>N[i].b;for(int i=1;i<=w;i++){cin>>x1>>yy1>>x2>>y2;//将墙附为-1 if(x1==x2){if(yy1>y2)swap(yy1,y2);for(int j=yy1;j<=y2;j++){vis[x1][j]=-1;}    }else if(yy1==y2){if(x1>x2)swap(x1,x2);for(int j=x1;j<=x2;j++)vis[j][yy1]=-1;}else if(x1<x2){if(yy1>y2){for(int j=x1;j<=x2;j++)vis[j][yy1--]=-1;} else if(yy1<y2){for(int j=x1;j<=x2;j++)vis[j][yy1++]=-1;}}else if(x1>x2){if(yy1<y2){for(int j=x2;j<=x1;j++)vis[j][y2--]=-1;}else if(yy1>y2){for(int j=x2;j<=x1;j++)vis[j][y2++]=-1;}}}for(int i=1;i<=x;i++){for(int j=1;j<=y;j++)cout<<vis[i][j]<<" ";cout<<endl;}for(int i=1;i<=l;i++){vis[N[i].a][N[i].b]=1;bfs(N[i].a,N[i].b,i);//多个水滴 }int ans=0;for(int i=1;i<=x;i++)for(int j=1;j<=y;j++){if(vis[i][j]>=1&&vis[i][j]<=l)ans++;}cout<<ans<<endl;}return 0;
}

湖南多校对抗赛(csu 1560)相关推荐

  1. Contest2071 - 湖南多校对抗赛(2015.03.28)

    Contest2071 - 湖南多校对抗赛(2015.03.28) 本次比赛试题由湖南大学ACM校队原创 http://acm.csu.edu.cn/OnlineJudge/contest.php?c ...

  2. 湖南多校对抗赛(2015.03.28)

    Contest2071 - 湖南多校对抗赛(2015.03.28) Contest2071 - 湖南多校对抗赛(2015.03.28) 本次比赛试题由湖南大学ACM校队原创 http://acm.cs ...

  3. 2021湖南多校对抗赛第三场

    2021湖南多校对抗赛第三场 排名 第一 第二 第三 中南2队 中南1队 湘潭大学1队 团体成绩 学校 总题数 总罚时 中南大学 26 4396 题解(部分) special thanks: Binb ...

  4. 2021湖南多校对抗赛第一场

    2021湖南多校对抗赛第一场 排名 第一 第二 第三 国防科大1队 湖南大学1队 湖南师范大学4队 团体成绩 学校 总题数 总罚时 中南大学 27 3499 湖南师范大学 29 4927 湘潭大学 2 ...

  5. 2022湖南多校对抗赛第一场

    2022湖南多校对抗赛第一场 队伍排名 第一 第二 第三 中南大学1队 湖南大学1队 湖南大学4队 团体成绩 取每个学校正式队伍前四名 学校 总题数 湖南大学 22 中南大学 19 湖南师范大学 16 ...

  6. 2022湖南多校对抗赛第四场

    2022湖南多校对抗赛第四场 队伍排名 第一 第二 第三 中南大学2队 湖南大学2队 国防科技大学4队 团体成绩 取每个学校正式队伍前四名 学校 总题数 中南大学 30 国防科技大学 27 湘潭大学 ...

  7. 2022湖南多校对抗赛第六场

    2022湖南多校对抗赛第六场 队伍排名 第一 第二 第三 湖南大学1队 湖南大学4队 中南大学2队 团体成绩 取每个学校正式队伍前四名 学校 总题数 湖南大学 16 中南大学 16 国防科技大学 16 ...

  8. 2022湖南多校对抗赛第三场

    2022湖南多校对抗赛第三场 队伍排名 第一 第二 第三 中南大学1队 国防科技大学1队 湖南师范大学3队 团体成绩 取每个学校正式队伍前四名 学校 总题数 中南大学 27 湖南师范大学 27 湖南大 ...

  9. Contest2089 - 湖南多校对抗赛(2015.05.31) Swipe(csu1648)

    Problem E: Swipe Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 100  Solved: 15 [Submit][Status][We ...

最新文章

  1. 解析|一文读懂AGV的关键技术——激光SLAM与视觉SLAM的区别
  2. Matlab画地球剖面图,分享用matlab显示地震记录的波形变面积图
  3. vue 路由相关操作
  4. hadoop 运行java程序_Hadoop java 程序运行
  5. ubutun 更换网络源_Ubuntu 更换源
  6. C语言 pthread_join
  7. Java基础知识回顾--网络编程基础
  8. java 权限管理框架
  9. 双线性函数的紧凑超平面散列(Compact Hyperplane Hashing with Bilinear Functions)阅读笔记
  10. 如何查找qq邮箱的服务器地址
  11. 短线交易秘诀(原书第2版)
  12. PX4 FMU [17] stabilize
  13. python模拟按键网游_Python 实现键盘鼠标按键模拟
  14. LiveGBS国标流媒体-摄像头网络直播方案部署问题
  15. kali下安装gvm(原openvas)
  16. css应该写在html语言的哪个标记里,CSS布局的选择题
  17. Call to undefined function imagecreatefromjpeg() 解决方案
  18. psychopy设置中文显示字体 楷体、宋体、微软雅黑
  19. eclipese相关
  20. DevOps的道法术器

热门文章

  1. PPTX机械危害预防手册(45页)(附下载)
  2. 计算机应用基础 复习资料,计算机应用基础复习资料.doc
  3. 杀鸡用牛刀:Sketch流程图绘制体验
  4. GPRS连接,用AT指令拨号上网
  5. dllcache的重建
  6. html图片自动切换代码,急哦~!如何实现网页中的图片自动变换?
  7. 春秋云境:CVE-2022-25411
  8. 罗斯蒙特3051S变送器快速连接装置分解图!
  9. 2021土建施工员考试题库及答案
  10. 自己动手完成一款简易P2P共享文件软件的制作(一)