CCF 最优配餐【暴力BFS】
2015-09-13 09:59
411 查看
0 0 一直没敢下手做,而且还想了好久。。因为觉得数据有点大。。?而且还被状压带跑偏了。。。。一直想着用DP或者网络流做。。直到我搜到了大神的题解。。。。
#include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <queue> using namespace std; #define maxn 1100 #define ll long long class node { public: int flag; // 1-->shop 2--> buyer 0--> none -1-->can't move int x,y; // buger need; ll cost,val; node(){ flag=0,val=0; } node(int xx,int yy,int f):x(xx),y(yy),flag(f){ } void set(int xx,int yy,int f,int v){ x=xx,y=yy,flag=f,val=v; } }a[maxn][maxn]; int vis[maxn][maxn]; int n,m,k,d; queue<node>que; int cmpx[4]={1,-1,0,0}; int cmpy[4]={0,0,1,-1}; bool check(int x,int y) { if(x<=0||y<=0||x>n||y>n) return false; if(a[x][y].flag==-1||vis[x][y]) return false; return true; } int main() { while(scanf("%d%d%d%d",&n,&m,&k,&d)!=EOF) { memset(vis,0,sizeof(vis)); ll ans=0; int x,y;ll z; for(int i=0;i<m;i++) { scanf("%d%d",&x,&y); a[x][y].x=x,a[x][y].y=y,a[x][y].flag=1; que.push(a[x][y]); } for(int i=0;i<k;i++) { scanf("%d%d%lld",&x,&y,&z); a[x][y].x=x,a[x][y].y=y,a[x][y].flag=2; a[x][y].cost+=z; } for(int i=0;i<d;i++) { scanf("%d%d",&x,&y); a[x][y].x=x,a[x][y].y=y,a[x][y].flag=-1; } while(!que.empty()) { node tmp=que.front(); que.pop(); int nx=tmp.x,ny=tmp.y,val=tmp.val; vis[nx][ny]=1; // printf("x=%d y=%d\n",nx,ny);system("pause"); for(int i=0;i<4;i++) { int tx=nx+cmpx[i],ty=ny+cmpy[i]; if(!check(tx,ty)) continue; a[tx][ty].x=tx,a[tx][ty].y=ty,a[tx][ty].val=val+1; vis[tx][ty]=1; que.push(a[tx][ty]); if(a[tx][ty].flag==2) ans+=a[tx][ty].cost*(val+1); } } cout<<ans<<endl; } return 0; }
相关文章推荐
- 另类过滤外国浏览者
- centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln 内部命令和外部命令 第五节课
- 计算两个GPS坐标的距离方法 - Java语言
- ios-清除本地缓存(三种方式)
- Iterator抽取迭代基类/Memento抽取备忘管理类/Interpreter终结非终结解释
- 单链表(四)——链表的反转
- java 集装箱 arraylist 用法
- 常见linux命令释义(第六天)——shell环境变量
- Strut2常规配置属性
- IOS之Core Foundation框架和Cocoa Foundation框架区别
- LeetCode----House Robber
- 个人学习笔记---linux内核同步办法的选择
- JVM内存管理深入垃圾收集器与内存分配策略
- 单链表(三)——链表的删除
- linux 系统编程1
- C++虚函数表
- 数据结构(与算法)可视化
- 谷歌新Logo如何做到只有305字节
- JVM分代垃圾回收策略的基础概念
- Python 实现栈