uva 10603 fill
来源:互联网 发布:复旦东区宿舍网络 编辑:程序博客网 时间:2024/05/29 15:34
这道题说是能让更加理解 搜索和djk spfa最短路这些东西之间的关系。。。
先做题,,没办法那么理清楚关系
#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<string>#include<cstring>#include<iomanip>#include<iostream>#include<stack>#include<cmath>#include<map>#include<vector>#define ll long long#define inf 0x3f3f3f3f#define INF 1000000000#define bug1 cout<<"bug1"<<endl;#define bug2 cout<<"bug2"<<endl;#define bug3 cout<<"bug3"<<endl;using namespace std;const int maxn=205;struct Node{ int v[3],dist; bool operator <(const Node&rhs)const{ return dist>rhs.dist; }};int vis[maxn][maxn];int cap[3];int ans[100000];bool update_ans(Node u){ int flag=0; for(int i=0;i<3;++i){ int d=u.v[i]; if(ans[d]<0||ans[d]>u.dist){ flag=1; ans[d]=u.dist; } } if(flag)return true; return false;}void solve(int a,int b,int c,int d){ cap[0]=a;cap[1]=b;cap[2]=c; memset(vis,0,sizeof(vis)); memset(ans,-1,sizeof(ans)); priority_queue<Node>que; Node s; s.v[0]=0;s.v[1]=0;s.v[2]=c;s.dist=0; vis[0][0]=1; que.push(s); update_ans(s); while(!que.empty()){ Node u=que.top();que.pop(); if(ans[d]>=0)break; for(int i=0;i<3;++i){ for(int j=0;j<3;++j){ if(i==j)continue; if(u.v[i]==0||u.v[j]==cap[j])continue; int amount=min(cap[j],u.v[i]+u.v[j])-u.v[j]; Node u2=u; u2.dist=u.dist+amount; u2.v[i]-=amount; u2.v[j]+=amount; if(update_ans(u2)){//执行了 更新操作,就看能不能放入, if(!vis[u2.v[0]][u2.v[1]]){//如果发现已经用过的,就不放 vis[u2.v[0]][u2.v[1]]=1; que.push(u2); } } } } } while(d>=0){ if(ans[d]>=0){ printf("%d %d\n",ans[d],d); return; } d--; }}int main(){ int t; scanf("%d",&t); while(t--){ int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); solve(a,b,c,d); }}
0 0
- UVA 10603 Fill
- uva 10603 - Fill
- uva 10603 - Fill
- UVa 10603 - Fill
- uva 10603 - Fill bfs
- uva 10603 Fill
- UVA 10603 - Fill
- UVa 10603 - Fill
- UVa:10603 Fill
- uva 10603 Fill
- UVA 10603 - Fill BFS~
- UVa 10603 - Fill
- UVA 10603-Fill
- uva 10603 Fill
- uva 10603 Fill
- UVa 10603 Fill
- UVa - 10603 - Fill
- UVA 10603 Fill
- 项目从eclipse中复制到myeclipse中,修改了项目名却无法访问路径
- 没想到你是这样的正则
- Spring MVC框架的详细流程
- 网页开发常用的插件
- 利用Lammps 运行已经得到的.data文件
- uva 10603 fill
- 功能缺陷的测试方法流程
- linux下普通文件和目录文件区别
- java学习_20170413
- linux基础学习13
- tableview的source绑定、select跳转绑定
- jsp中jstl标签的类似 if
- mvn 请使用 -source 7 或更高版本以启用 diamond 运算符
- Eratosthenes筛法