poj3683 Priest John's Busiest Day【2-sat n+m算法】
2016-07-13 10:00
429 查看
#include<stdio.h> #include<algorithm> #include<vector> #include<string.h> #include<math.h> using namespace std; const int N=1024; int mark[2*N],s[2*N],c,n,st [2],ed [2],t ; vector<int>g[2*N]; int ok(int i,int a,int j,int b) { if(st[i][a]<st[j][b]&&ed[i][a]<=st[j][b]) return 1; if(st[j][b]<st[i][a]&&ed[j][b]<=st[i][a]) return 1; return 0; } void init() { for(int i=0;i<2*n;i++) g[i].clear(); memset(mark,0,sizeof(mark)); } void add(int x,int y) { g[x].push_back(y^1); g[y].push_back(x^1); } int dfs(int x) { if(mark[x^1]) return 0; if(mark[x]) return 1; mark[x]=1; s[c++]=x; for(int i=0;i<g[x].size();i++) { if(!dfs(g[x][i])) return 0; } return 1; } int solve() { for(int i=0;i<2*n;i+=2) { if(!mark[i]&&!mark[i+1]) { c=0; if(!dfs(i)) { while(c>0) mark[s[--c]]=0; if(!dfs(i+1)) return 0; } } } return 1; } int main() { int H1,M1,H2,M2,T1,T2,T; while(~scanf("%d",&n)) { for(int i=0;i<n;i++) { scanf("%d:%d",&H1,&M1); scanf("%d:%d",&H2,&M2); scanf("%d",&T); T1=H1*60+M1; T2=H2*60+M2; st[i][0]=T1; ed[i][0]=T1+T; st[i][1]=T2-T; ed[i][1]=T2; } init(); for(int i=0;i<n;i++) { for(int a=0;a<2;a++) { for(int j=i+1;j<n;j++) { for(int b=0;b<2;b++) { if(ok(i,a,j,b)==0) add(i*2+a,j*2+b); } } } } if(solve()==0) printf("NO\n"); else { printf("YES\n"); for(int i=0;i<2*n;i++) { if(mark[i]) { int a=i/2; int b=i%2; T1=st[a][b]; T2=ed[a][b]; printf("%02d:%02d %02d:%02d\n",T1/60,T1%60,T2/60,T2%60); } } } } return 0; }
相关文章推荐
- 应用多机房部署
- css之z-index
- canvas 伞形的绘制
- shell学习-1
- DriverStudio开发PCI设备DMA数据传输
- uC/cos-II系统函数管理
- [Hihocoder]1335 : Email Merge (并查集)
- css之relative
- 【ASO100独家】2015年App Store审核被拒的23个理由
- /usr/bin/ld: 找不到 -lippicv(ubuntu 16.04 LTS 安装opencv-3.1.0,含完整安装步骤)
- css之overflow
- Extjs2.0搭建的一个简易后台管理系统demo教程,能更换主题,可直接不用部署在Tomcat上就能运行
- 针对Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解决方案
- 【hdu3247-Resource Archiver】位压DP+AC自动机+SPFA
- 在Windows/Ubuntu下安装OpenGL环境(GLUT/freeglut)与跨平台编译(mingw/g++)
- 使用frame,框架后,在jsp中,外部引用 link css样式表无效的解决方法
- CYQ.Data V5 分布式自动化缓存设计介绍
- Redis server的一些心得
- rrdtool结合apache展现
- javamail 定时发送邮件,554 错误。