poj1637
来源:互联网 发布:2017网络自制综艺现状 编辑:程序博客网 时间:2024/04/30 14:49
欧拉回路判断方法
膜板题
#include <cmath>#include <cstdio>#include <cstring>#include <iostream>using namespace std;int n,m,u,v;int in[210],out[210];int dis[210],gap[210];int sum_src,sum_sik;struct edge {int v,f,next;}e[3010];int cnt,head[210];int read_int () {char c = getchar();int re = 0;for(;c > '9' || c < '0';c = getchar());for(;c >= '0' && c <= '9';c = getchar())re = re * 10 + c - '0';return re;}void adde (int u,int v,int f) {e[cnt].v = v;e[cnt].f = f;e[cnt].next = head[u];head[u] = cnt++;e[cnt].v = u;e[cnt].f = 0;e[cnt].next = head[v];head[v] = cnt++;}int dfs (int u,int minf) { if(u == n + 1)return minf; int chan = n + 1,leftf = minf; for(int i = head[u];i != -1;i = e[i].next) { int v = e[i].v; if(e[i].f > 0) { if(dis[v] + 1 == dis[u]) { int t = dfs(v,min(leftf,e[i].f)); e[i].f -= t; e[i ^ 1].f += t; leftf -= t; if(dis[0] >= n + 2)return minf - leftf; if(leftf == 0)break; } chan = min(chan,dis[v]); } } if(leftf == minf) { if(--gap[dis[u]] == 0)dis[0] = n + 2; ++gap[dis[u] = chan + 1]; } return minf - leftf;}bool sap () {int re = 0;gap[0] = n + 2;while(dis[0] < n + 2)re += dfs(0,0x3f3f3f3f);if(re == sum_src && re == sum_sik)return 1;return 0;}int main () {int T = read_int();while(T--) {memset(head,-1,sizeof head);memset(in,0,sizeof in);memset(out,0,sizeof out);memset(dis,0,sizeof dis);memset(gap,0,sizeof gap);sum_src = sum_sik = cnt = 0;n = read_int();m = read_int();for(int i = 1;i <= m;++i) {u = read_int();v = read_int();if(!read_int())adde(u,v,1);++in[v];++out[u];}bool f = 0;for(int i = 1;i <= n;++i) {if((int)abs(out[i] - in[i]) & 1 || (in[i] == 0 && out[i] == 0)) {f = 1;break;}if(out[i] - in[i] > 0) {adde(0,i,(out[i] - in[i]) >> 1);sum_src += (out[i] - in[i]) >> 1;}if(out[i] - in[i] < 0) {adde(i,n + 1,(in[i] - out[i]) >> 1);sum_sik += (in[i] - out[i]) >> 1;}}if(f) {printf("impossible\n");continue;}if(sap())printf("possible\n");else printf("impossible\n");}}
0 0
- poj1637
- poj1637
- poj1637
- poj1637 Dinic
- [POJ1637]SightseeingTour
- poj1637(混合图欧拉路 + Dinic)
- poj1637 Sightseeing tour dinic
- poj1637 Sightseeing tour
- poj1637 Sightseeing tour
- poj1637 Sightseeing tour
- poj1637 Sightseeing tour
- 【poj1637】【最大流】Sightseeing tour
- POJ1637 Sightseeing tour 网络流
- poj1637(混合图判欧拉回路)
- 混合图的欧拉回路POJ1637
- POJ1637-最大流判断混合图欧拉回路
- poj1637 Sightseeing tour (混合图欧拉回路)
- 解题报告 之 POJ1637 Sightseeing tour
- Scalaz(35)- Free :运算-Trampoline,say NO to StackOverflowError
- 由火车退票制度改革想到的民生问题
- 【Tyvj1185】【codevs1296】【BZOJ1588】营业额统计,Splay练习
- 贪心算法4之1008
- Qt状态机QStateMachine使用
- poj1637
- [BZOJ 1061][Noi2008]志愿者招募
- BZOJ1529ska Piggy banks
- 集群监控--监控指标
- OpenGL, OpenGL ES, WebGL, GLSL, GLSL ES APIs 列表
- 删除顺序表指定元素
- 用蚕茧表示法写简洁实用的接口文档
- 判断当前界面是否是桌面
- 观察者模式与java实现例子