栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3679 One Touch Drawing

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3679 One Touch Drawing

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;struct Edge{ int x, y, d, z; void set(int _x, int _y, int _d, int _z){ x = _x; y = _y; d = _d; z = _z; }} eg[100];int cnt, n, force[13];#define bit(k) (1<<(k))bool vis[12][5000000];bool dfs(int u, int state){ if((state&(bit(cnt)-1)) == bit(cnt)-1) return true; if(vis[u][state]) return false; vis[u][state] = true; if(force[u]>=0){ return dfs(force[u],state^bit(cnt+u)); } int i; for(i=0;i<cnt;i++){ Edge uu = eg[i]; if(bit(i) & state)continue; if(!uu.d){ if(uu.x == u){ if(dfs(uu.y,state^bit(i)^bit(cnt+u))) return true;else continue; } else if(uu.y==u){ if(dfs(uu.x,state^bit(i)^bit(cnt+u))) return true;else continue; } else continue; } else{ if(uu.z>=0){ if(state&bit(cnt+uu.z)){ if(uu.y != u) continue; if(dfs(uu.x,state^bit(i)^bit(cnt+u))) return true;else continue; } else{ if(uu.x != u) continue; if(dfs(uu.y,state^bit(i)^bit(cnt+u))) return true;else continue; } } else{ if(uu.x!=u)continue; if(dfs(uu.y,state^bit(i)^bit(cnt+u))) return true;else continue; } } } return false;}int main(){ int m, w, x, y, tmp, d, z, l, r, i; while(scanf("%d%d%d",&n,&m,&w)!=EOF){ cnt = 0; while(m--){ scanf("%d%d%d%d%d",&x,&y,&tmp,&d,&z); while(tmp--){ eg[cnt++].set(x,y,d,z); } } memset(force,-1,sizeof(force)); while(w--){ scanf("%d%d",&l,&r); force[l] = r; } memset(vis,0,sizeof(vis)); for(i=0;i<n;i++) if(dfs(i,0)) break; if(i<n) puts("Yes");else puts("No"); } return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372804.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号