HDU 1534 Schedule Problem 差分约束
来源:互联网 发布:淘宝客推广券 编辑:程序博客网 时间:2024/05/11 17:02
http://acm.hdu.edu.cn/showproblem.php?pid=1534
题目大意:
一个任务可以被划分为n个小的任务,每个小任务的时间是t[i],然后把这些小任务给员工们做。但是有的任务要建立在别的任务完成的情况下。
下面给出四种约束:FAS(a,b),FAF(a,b),SAS(a,b),SAF(a,b),以SAF为例,即a要在b结束之后开始。
求完成所有任务的最短时间
思路:
差分约束。。
最短时间就是求最小值也就是求最大路径。
FAS:a+t[a]>=b ---------> a-b>=-t[a];
FAF: a+t[a]>=b+t[b] ---------> a-b>=t[b]-t[a];
SAF: a>=b+t[b] ---------> a-b>=t[b]
SAS:a>=b ---------> a-b>=0
#include<cstdio>#include<cstring>#include<queue>#include<algorithm>using namespace std;const int MAXN=10000+10;const int MAXM=200000;int head[MAXN],len,n,ml,md;int dis[MAXN],cnt[MAXN],t[MAXN];bool vis[MAXN];struct edge{int to,val,next;}e[MAXM];void add(int from,int to,int val){e[len].to=to;e[len].val=val;e[len].next=head[from];head[from]=len++;}bool spfa(){queue<int> q;for(int i=1;i<=n;i++){dis[i]=0;vis[i]=1;cnt[i]=1;q.push(i);}while(!q.empty()){int cur=q.front();q.pop();vis[cur]=false;for(int i=head[cur];i!=-1;i=e[i].next){int id=e[i].to;if(e[i].val + dis[cur] > dis[id]){dis[id]=e[i].val + dis[cur];if(!vis[id]){if(++cnt[id]>n)return false;vis[id]=true;q.push(id);}}}}return true;}int main(){int kase=1;while(scanf("%d",&n),n){memset(head,-1,sizeof(head));len=0;for(int i=1;i<=n;i++)scanf("%d",&t[i]);char cmd[10];while(scanf("%s",cmd),cmd[0]!='#'){int a,b;scanf("%d%d",&a,&b);if(strcmp("FAS",cmd)==0)add(b,a,-t[a]);else if(strcmp("FAF",cmd)==0)add(b,a,t[b]-t[a]);else if(strcmp("SAF",cmd)==0)add(b,a,t[b]);else if(strcmp("SAS",cmd)==0)add(b,a,0);}if(kase!=1)printf("\n");printf("Case %d:\n",kase++);if(!spfa())puts("impossible");else{for(int i=1;i<=n;i++)printf("%d %d\n",i,dis[i]);}}return 0;}
4 0
- HDU--1534[Schedule Problem] 差分约束
- HDU 1534 Schedule Problem 差分约束
- HDU 1534 Schedule Problem 差分约束
- 【HDU】1534 Schedule Problem 差分约束
- HDU 1535--Schedule Problem【差分约束】
- HDU 1534 Schedule Problem 差分约束输出一组解
- HDU 1534 Schedule Problem(差分约束系统)
- HDU 1534 Schedule Problem(差分约束)
- HDU 1534 Schedule Problem 最短路+差分约束
- Schedule Problem (HDU 1534 差分约束+SPFA)
- 【差分约束】 HDOJ 1534 Schedule Problem
- HDOJ 1534 Schedule Problem 差分约束
- hdu 1534 Schedule Problem(差分约束求最长路)
- 杭电1534 Schedule Problem(差分约束)
- hud-1534 Schedule Problem(差分约束)
- Schedule Problem 【ZJU1455】 差分约束
- hdu1534 Schedule Problem (spfa差分约束)
- HDU1534 Schedule Problem 【差分约束系统】
- linux进程间通信--概括
- 在Activity中关闭前一个Activity
- C#读取XML数据
- AIX下做定时任务注意事项
- box2d学习之一鼠标关节及查询AABB
- HDU 1534 Schedule Problem 差分约束
- unity消息机制实现
- 2013 长沙邀请赛 HDU 4571 Travel in time(dp)
- VC++ 静态库&动态库的创建与调用
- linux下各个文件夹的作用
- nmon和nmonanalser的下载和使用注意事项
- asp.net获取当前时间
- 硬币水题II(概率)
- 恶作剧:被乔布斯整蛊也很快乐