题目链接

建个图,套个模板。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <map>
#include <algorithm>
#include <vector>
#include <string>
#include <queue>
using namespace std;
#define INF 0x3ffffff
struct node
{
int u,v,next,re,w;
}edge[];
int first[],dis[];
int in[],out[];
int t,str,end;
void CL()
{
t = ;
memset(first,-,sizeof(first));
}
void add(int u,int v,int w)
{
edge[t].u = u;
edge[t].v = v;
edge[t].w = w;
edge[t].re = t + ;
edge[t].next = first[u];
first[u] = t ++;
edge[t].u = v;
edge[t].v = u;
edge[t].w = ;
edge[t].re = t - ;
edge[t].next = first[v];
first[v] = t ++;
}
int bfs()
{
int u,v,i;
memset(dis,-,sizeof(dis));
queue<int> que;
que.push(str);
dis[str] = ;
while(!que.empty())
{
u = que.front();
que.pop();
for(i = first[u];i != -;i = edge[i].next)
{
v = edge[i].v;
if(edge[i].w > &&dis[v] < )
{
dis[v] = dis[u] + ;
que.push(v);
}
}
}
if(dis[end] > ) return ;
else return ;
}
int dfs(int u,int step)
{
int i,temp,v,tf = ;
if(u == end) return step;
for(i = first[u];i != -;i = edge[i].next)
{
v = edge[i].v;
if(edge[i].w > &&dis[v] == dis[u] + &&(temp = dfs(v,min(step,edge[i].w))))
{
edge[i].w -= temp;
edge[edge[i].re].w += temp;
return temp;
}
}
if(!tf) dis[u] = -;
return tf;
}
int main()
{
int t,i,u,v,k,n,m;
scanf("%d",&t);
while(t--)
{
memset(in,,sizeof(in));
memset(out,,sizeof(out));
scanf("%d%d",&n,&m);
CL();
str = ;
end = n + ;
for(i = ;i < m;i ++)
{
scanf("%d%d%d",&u,&v,&k);
in[u] ++;
out[v] ++;
if(k != )
add(u,v,);
}
for(i = ;i <= n;i ++)
{
if(abs(in[i]-out[i])% == )
break;
}
if(i != n+)
{
printf("impossible\n");
continue;
}
int sum = ;
for(i = ;i <= n;i ++)
{
if(in[i] > out[i])
{
add(str,i,(in[i]-out[i])/);
sum += (in[i]-out[i])/;
}
else
{
add(i,end,(out[i]-in[i])/);
}
}
int ans = ,res;
while(bfs())
{
while(res = dfs(str,INF))
ans += res;
}
if(ans == sum)
printf("possible\n");
else
printf("impossible\n");
}
return ;
}

POJ 1637 Sightseeing tour(混合图的欧拉回路)的更多相关文章

  1. POJ 1637 Sightseeing tour ★混合图欧拉回路

    [题目大意]混合图欧拉回路(1 <= N <= 200, 1 <= M <= 1000) [建模方法] 把该图的无向边随便定向,计算每个点的入度和出度.如果有某个点出入度之差为 ...

  2. poj 1637 Sightseeing tour 混合图欧拉回路 最大流 建图

    题目链接 题意 给定一个混合图,里面既有有向边也有无向边.问该图中是否存在一条路径,经过每条边恰好一次. 思路 从欧拉回路说起 首先回顾有向图欧拉回路的充要条件:\(\forall v\in G, d ...

  3. POJ 1637 Sightseeing tour (混合图欧拉回路)

    Sightseeing tour   Description The city executive board in Lund wants to construct a sightseeing tou ...

  4. POJ1637:Sightseeing tour(混合图的欧拉回路)

    Sightseeing tour Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 10581   Accepted: 4466 ...

  5. POJ 1637 Sightseeing tour 建图+网络流

    题意: 给定一个混合图,所谓混合图就是图中既有单向边也有双向边,现在求这样的图是否存在欧拉回路. 分析: 存在欧拉回路的有向图,必须满足[入度==出度],现在,有些边已经被定向,所以我们直接记录度数即 ...

  6. POJ 1637 Sightseeing tour(最大流)

    POJ 1637 Sightseeing tour 题目链接 题意:给一些有向边一些无向边,问能否把无向边定向之后确定一个欧拉回路 思路:这题的模型很的巧妙,转一个http://blog.csdn.n ...

  7. [POJ 1637] Sightseeing tour(网络流)

    题意 (混合图的欧拉回路判定) 给你一个既存在有向边, 又存在无向边的图. 问是否存在欧拉回路. \(N ≤ 200, M ≤ 1000\) 题解 难点在于无向边. 考虑每个点的度数限制. 我们先对无 ...

  8. HDU 1956 POJ 1637 Sightseeing tour

    混合图的欧拉回路判定方法: 1.首先判断基图是否连通,不连通的话表示不可能,否则进入下一步. 2.对于无向边,随便确定一个方向 3.确定好了之后,整张图就变成了有向图,计算每个节点的入度与出度 4.如 ...

  9. POJ 1637 - Sightseeing tour - [最大流解决混合图欧拉回路]

    嗯,这是我上一篇文章说的那本宝典的第二题,我只想说,真TM是本宝典……做的我又痛苦又激动……(我感觉ACM的日常尽在这张表情中了) 题目链接:http://poj.org/problem?id=163 ...

随机推荐

  1. Top 5 iPad Pro Apps for Your Apple Pencil

    1. Procreate - 5 to 10 dollars 2. Adobe Sketch - Free 3. Paper - Free 4. Pixelmator 5. Notes

  2. [Head First设计模式]生活中学设计模式——迭代器模式

    系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...

  3. R语言:用简单的文本处理方法优化我们的读书体验

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html 前言 延续之前的用R语言读琅琊榜小说,继续讲一下利用R语言做一些简单的文本处理.分词的事情.其实 ...

  4. CentOS6.3 编译安装LAMP(2):编译安装 Apache2.4.6

    Apache官方说: 与Apache 2.2.x相比,Apache 2.4.x提供了很多性能方面的提升,包括支持更大流量.更好地支持云计算.利用更少的内存处理更多的并发等.除此之外,还包括性能提升.内 ...

  5. ASP.NET Core--基于授权的视图

    翻译如下: 开发人员通常希望基于当前用户身份显示,隐藏或以其他方式修改UI. 您可以通过依赖注入访问MVC视图中的授权服务. 将授权服务注入Razor视图,请使用@inject指令,例如: @inje ...

  6. poj 1141

    简单的dp 忘了\n,调了半天(目测不是第一次了) 直接贴代码: #include<cstdio> #include<cstring> using namespace std; ...

  7. javascript基础01

    javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ...

  8. JavaScript刷新页面n种方法

    window.location.href 属性 window.location.href=window.location.href;//刷新当前页面 asp.net 或 asp 利用此功能刷新页面 R ...

  9. mysql 在windows下,使用 net start mysql 命令发生错误 服务名无效 或 1067

    mysql 在windows下,使用 net start mysql 命令发生错误 :服务名无效 或 1067  先使用mysqld -install安装一下 删除data目录下的日志等文件(因为之前 ...

  10. java面试题及答案(转载)

    JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...