SPOJ 962 Intergalactic Map (从A到B再到C的路线)

题意】在一个无向图中,一个人要从A点赶往B点,之后再赶往C点,且要求中途不能多次经过同一个点。问是否存在这样的路线。(3 <= N <= 30011, 1 <= M <= 50011) 【思路】很巧的一道题,一般我们都是把源点连接起点,但那样的话就不好控制从A先到B再到C了,所以我们换个思路,以B为源点,A、C为汇点,看最大流是否为2即可~不经过同一个点就直接拆点连一条(i, i', 1)即可,无向图……就连两条反向边吧~~本来想改一下反向流就好的,可是想想那样也把源点汇点连出来的边也变成双向了……没试行不行……  

#include 
#include 
#include 
#include 
#include 
#include 
#define MID(x,y) ((x+y)/2)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
const int MAXV = 60055;
const int MAXE = 200055;
const int oo = 0x3fffffff;
struct node{int u, v, flow;int opp;int next;
};
struct Dinic{node arc[2*MAXE];int vn, en, head[MAXV];     //vn点个数(包括源点汇点),en边个数int cur[MAXV];              //当前弧int q[MAXV];                //bfs建层次图时的队列int path[2*MAXE], top;        //存dfs当前最短路径的栈int dep[MAXV];              //各节点层次void init(int n){vn = n;en = 0;mem(head, -1);}void insert_flow(int u, int v, int flow){arc[en].u = u;arc[en].v = v;arc[en].flow = flow;arc[en].opp = en + 1;arc[en].next = head[u];head[u] = en ++;arc[en].u = v;arc[en].v = u;arc[en].flow = 0;       //反向弧arc[en].opp = en - 1;arc[en].next = head[v];head[v] = en ++;}bool bfs(int s, int t){mem(dep, -1);int lq = 0, rq = 1;dep[s] = 0;q[lq] = s;while(lq < rq){int u = q[lq ++];if (u == t){return true;}for (int i = head[u]; i != -1; i = arc[i].next){int v = arc[i].v;if (dep[v] == -1 && arc[i].flow > 0){dep[v] = dep[u] + 1;q[rq ++] = v;}}}return false;}int solve(int s, int t){int maxflow = 0;while(bfs(s, t)){int i, j;for (i = 1; i <= vn; i ++)  cur[i] = head[i];for (i = s, top = 0;;){if (i == t){int mink;int minflow = 0x3fffffff;for (int k = 0; k < top; k ++)if (minflow > arc[path[k]].flow){minflow = arc[path[k]].flow;mink = k;}for (int k = 0; k < top; k ++)arc[path[k]].flow -= minflow, arc[arc[path[k]].opp].flow += minflow;maxflow += minflow;top = mink;		//arc[mink]这条边流量变为0, 则直接回溯到该边的起点即可(这条边将不再包含在增广路内).i = arc[path[top]].u;}for (j = cur[i]; j != -1; cur[i] = j = arc[j].next){int v = arc[j].v;if (arc[j].flow && dep[v] == dep[i] + 1)break;}if (j != -1){path[top ++] = j;i = arc[j].v;}else{if (top == 0)   break;dep[i] = -1;i = arc[path[-- top]].u;}}}return maxflow;}
}dinic;
int main(){int t;scanf("%d",&t);while(t --){int n, m;scanf("%d %d", &n, &m);if (n < 3){puts("NO");continue;}dinic.init(2*n+2);for (int i = 1; i <= n; i ++){dinic.insert_flow(2*i-1, 2*i, 1);}for (int i = 1; i <= m; i ++){int u, v;scanf("%d %d", &u, &v);if(u > n || v > n) continue;dinic.insert_flow(2*u, 2*v-1, 1);dinic.insert_flow(2*v, 2*u-1, 1);}dinic.insert_flow(2*n+1, 2*2, 2);dinic.insert_flow(2*1, 2*n+2, 1);dinic.insert_flow(2*3, 2*n+2, 1);if (dinic.solve(2*n+1, 2*n+2) == 2){puts("YES");}else{puts("NO");}}return 0;
}

转载于:https://www.cnblogs.com/AbandonZHANG/p/4114048.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转载】在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库

在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库 SQLDMO(SQL Distributed Management Objects&#xff0c;SQL分布式管理对象)封装了Microsoft SQL Server数据库中的对象。SQLDMO是Microsoft SQL Server中企业管理器所使用的应用程序接口&#xff0c;所以它可以执行很多…

雨棚板弹性法计算简图_钢结构工程量计算、报价要点

第一部分图纸一、图纸&#xff1a;根据图纸目录&#xff0c;清理核对图纸数量&#xff0c;检查是否有遗漏。二、建筑施工图1. 设计总说明&#xff08;1&#xff09; 建筑面积、结构形式、柱距、跨度、结构布置情况&#xff1b;&#xff08;2&#xff09; 工程量计算的范围&…

ubuntu制作usb启动盘

准备&#xff1a; u盘iso镜像文件--ubuntu-12.04.2-desktop-amd64.iso烧盘软件--unetbootin-linux-583步骤&#xff1a; 格式化u盘 查看u盘信息 #mount/dev/sdb1 on /media/KINGSTON type vfat (rw,nosuid,nodev,uid1000,gid1000,shortnamemixed,dmask0077,utf81,showexec,flus…

HDU1907 ZJU3113

/* 有SJ 定理&#xff1a;对于任意的一个 Anti-SG 游戏&#xff0c;如果我们规定当局面中所有单一游戏的 SG 值为 0 时游戏 结束&#xff0c;则先手必胜当且仅当以下两个条件满足任意一个&#xff1a; (1)游戏的 SG 函数不为 0&#xff0c;且游戏中某个单一游戏的 SG 函数大于1…

十分钟理解线性代数的本质_数学对于编程来说到底有多重要?来看看编程大佬眼里的线性代数!...

本文提出了一种观点&#xff1a;从应用的角度&#xff0c;我们可以把线性代数视为一门特定领域的程序语言。我们一起来看看&#xff01;文章有点偏理论讨论&#xff0c;可能比较枯燥&#xff0c;对于一名程序员&#xff0c;你如果看下去&#xff0c;你将会有不一样的收获&#…

oh-my-zsh upgrade problem

Oh-My-ZSH upgrade issue with bad substitution message Any problem with automatic Oh-My-Zsh upgrade? Last login: Mon May 13 13:57:50 2013 from ifusio.com [Oh My Zsh] Would you like to check for updates? Type Y to update oh-my-zsh: y /home/thomas/.oh-my-zs…

u-boot-2011.06-rc2移植到mini2440开发板(一)

一、移植环境 u-boot版本&#xff1a;u-boot-2011.06-rc2 Linux版本&#xff1a;Ubuntu 11.04 交叉编译工具&#xff1a;arm-linux-gcc-4.3.2(友善之臂) 开发板&#xff1a;友善之臂mimi2440 CPU:s3c2440 SDRAM:64MB Nor Flash:2MB Nand Flash:128MB 网卡&#xff1a;DM9000 二…

Linux Socket学习--套接口的类型和协议

我们首先来说一下PF_INET和AF_INET&#xff0c;虽然标准提倡在指定demain参数的时候&#xff0c;优先使用PF_INET&#xff0c;但是大量已经编写的c代码遵循旧的协议。目前情况是AF_UNIXPF_UNIX&#xff0c;AF_INETPF_INET。但是将来是不是这样不好说啊。 不同于socketpari函数的…

8266串口调试助手_200行Python代码实现串口调试助手(2) 界面构建

大家好&#xff0c;我是痞子衡&#xff0c;是正经搞技术的痞子。今天痞子衡给大家介绍的是串口调试工具pzh-py-com诞生之界面构建。一个软件的UI界面是非常重要的&#xff0c;这是软件与用户交互的接口&#xff0c;软件功能即使再强大&#xff0c;但如果没有清晰的UI界面&#…

权限访问控制设计

一、前言 之前的博客一直都还没写到框架的实现及权限系统&#xff0c;今天开始写我的权限系统&#xff0c;我以前做过的项目基本上都有权限管理这个模块&#xff0c;但各个系统都会有一些不太一样&#xff0c;有些简单点&#xff0c;有些稍微复杂一点&#xff0c;一句话&#x…

关于页面布局的一些注意点

1、在div布局不好解决的地方不用犹豫&#xff0c;使用table&#xff01; 2、div使用百分比大小时如果其又受其他元素的固定高宽影响的话overflow无效&#xff0c;加入position:absolute即可解决 3、当有dtd头存在时height的百分比单位不起…

jquery $.trim()方法使用介绍

$.trim(str)的作用是去掉字符串首尾空格 $.trim(str) 返回&#xff1a;string&#xff1b; 说明&#xff1a;去掉字符串首尾空格。 示例&#xff1a; 先看个错误代码&#xff1a; <input type"text" name"" id"results" value""/&…

卸载失败_Windows 10可能的新功能-自动卸载失败的补丁更新

Windows 10作为Windows最新报告&#xff0c;微软正在向Windows 10添加一项新的恢复功能&#xff0c;该功能旨在自动检测更新安装后启动失败的时间。在用户不必做任何事情的情况下&#xff0c;将卸载违规更新&#xff0c;这个操作可以引导系统再次运行。根据在线发布的支持文档&…

用java发送邮件(黄海已测试通过)

/*** java发送带附件的邮件* 周枫* 2013.8.10*/ package com.dsideal.Util; import javax.mail.*; import javax.mail.internet.*;import java.util.*; import javax.activation.*;public class SendMail {private static String host "smtp.qq.com"; // smtp服务器…

MS SQL 不常用但却十分有用的一些语法

创建自定义数据类型 CREATE TYPE ADDRESS FROM VARCHAR(30) NOT NULL数据量大了的情况下修改表某字段类型方法 ALTER TABLE TEST ALTER COLUMN TEST VARCHAR(80) 注意&#xff1a;如果要包含一些数据如numeric数据类型转换成为Integer数据类型时数据将自动取整&#xff0c;所以…

iOS开发CoreAnimation解读之三——几种常用Layer的使用解析

iOS开发CoreAnimation解读之三——几种常用Layer的使用解析 一、CAEmitterLayer CAEmitterLayer是CoreAnimation框架中的粒子发射层&#xff0c;在以前的一片博客中有详细的介绍和范例&#xff0c;这里不再重复&#xff0c;地址如下&#xff1a; 粒子效果的应用和火焰范例&…

中文格式_常见中文编码格式

中文编码主要有以下四种&#xff1a;GB2312简体中文编码&#xff0c;一个汉字占用2个字节&#xff0c;在大陆是主要的编码方式。当文章/网页中包含繁体中文、日文、韩文等时&#xff0c;这些内容可能无法被正确编码。BIG5繁体中文编码&#xff0c;主要在台湾地区使用。GBK支持简…

广播发送与接收

//发送端 #include <iostream> #include <stdio.h> #include <string.h> #include <winsock2.h> using namespace std; int main() { WSADATA wsaData; short version MAKEWORD(2,0); WSAStartup(version,&wsa…

征服英语的30个坏习惯

作者&#xff1a;李阳 亲爱的正在征服英语的战友们&#xff0c;你们辛苦了&#xff01; 我总结了20多年来我自己以及我周围的成功人士们风风雨雨的生活和奋斗历程&#xff0c;得出了如下结论&#xff1a; 英语的好习惯决定英语学习的最终成败&#xff01; 这些好习惯包括&…

SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用

SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用 一、引言 在移动开发中&#xff0c;通常会用到一些小型的数据库进行数据管理。SQLite是一款十分小巧便捷的数据库&#xff0c;在iOS开发中&#xff0c;原生框架也对其有很好的支持。 二、SQLite常用语句 数据库…