网络流(置顶)

poj1637 判断混合图是否能形成欧拉回路:网络流做奇偶性判断(inspire)

  1 //dinic算法:
2 #include <stdio.h>
3 #include <string.h>
4 #include <math.h>
5 #include <iostream>
6 #include <algorithm>
7
8 #define INF 0x3f3f3f3f
9 using namespace std;
10 const int maxn = 2010;
11 const int maxm = 19010;
12
13 int e,S,T;
14 int first[maxn],next[maxm],work[maxm];
15 int u[maxm],v[maxm],w[maxm];
16
17 void init(){
18 e = 0;
19 memset(first,-1,sizeof(first));
20 }
21
22 void addedge(int a,int b,int c){
23 v[e] = b;next[e] = first[a];w[e] = c;first[a] = e++;
24 v[e] = a;next[e] = first[b];w[e] = 0;first[b] = e++;
25 }
26 int d[maxn],q[maxn];
27 int bfs(){
28 int rear = 0;
29 memset(d,-1,sizeof(d));
30 d[S] = 0;q[rear++] = S;
31 for(int i = 0;i < rear;i++){
32 for(int j = first[q[i]];j != -1;j = next[j])
33 if(w[j] && d[v[j]] == -1){
34 d[v[j]] = d[q[i]] + 1;
35 q[rear++] = v[j];
36 if(v[j] == T) return 1;
37 }
38 }
39 return 0;
40 }
41
42 int dfs(int cur,int a){
43 if(cur == T) return a;
44 for(int &i = work[cur];i != -1;i = next[i]){
45 if(w[i] && d[v[i]] == d[cur] + 1)
46 if(int t = dfs(v[i],min(a,w[i]))){
47 w[i] -= t;w[i^1] += t;
48 return t;
49 }
50 }
51 return 0;
52 }
53
54 int dinic(){
55 int ans = 0;
56 while(bfs()){
57 memcpy(work,first,sizeof(first));
58 while(int t = dfs(S,INF)) ans += t;
59 }
60 return ans;
61 }
62 int M,N,CASE;
63 int ind[maxn],outd[maxn];
64 int main(){
65 scanf("%d",&CASE);
66 while(CASE--)
67 {
68 scanf("%d%d",&N,&M);
69 init();
70 S=N+1;T=N+2;
71 memset(ind,0,sizeof(ind));
72 memset(outd,0,sizeof(outd));
73 for(int i=1;i<=M;i++){
74 int x,y,c;
75 scanf("%d%d%d",&x,&y,&c);
76 if (c==1) outd[x]++,ind[y]++;
77 if (c!=1) {
78 outd[x]++,ind[y]++;
79 addedge(x,y,1);
80 }
81 }
82 bool isok=true;
83 for(int i=1;i<=N;i++) if ((outd[i]-ind[i])%2!=0) isok=false;
84 if (!isok) {
85 printf("impossible\n");
86 continue;
87 }
88 int sum=0;
89 for(int i=1;i<=N;i++){
90 int k=(outd[i]-ind[i])/2;
91 if (k<0) addedge(i,T,-k);
92 if (k>0) {
93 sum+=k;
94 addedge(S,i,k);
95 }
96 }
97 int flow=dinic();
98 //// cout<<sum<<","<<flow<<endl;
99 if (flow==sum) printf("possible\n");else printf("impossible\n");
100 }
101 return 0;
102 }

网络流(置顶),布布扣,bubuko.com

时间: 2024-12-25 18:50:49

网络流(置顶)的相关文章

Mysql数据库实现的简单置顶

Mysql数据库实现的简单置顶 1. 问题背景:小编要做一个文章管理的简单网页,用的是Mysql数据库.其中需要文章置顶功能,如图: 2. 最初的思路:机智的小编立刻大脑飞速运转,很快想到为存储文章的"article"表设定一个(int)型的"isTop"属性,0表示不置顶,大于0表示置顶且数字越大,优先级越高.显示的时候只需按照"isTop"降序显示.当用户需要将"id"为"001"的文章置顶时,后台只需

自定义置顶TOP按钮

简述一下,分为三个步骤: 1. 添加Html代码 2. 调整Css样式 3. 添加Jquery代码 具体代码如下: <style type="text/css"> #GoTop{                width:40px;                height:40px;                background-color:#F59E1D;                position:fixed;                bottom:

iOS使用UIPageViewController结合多个UITableView后点击状态栏无法让UITableView置顶问题

页面结构:1个UIPageViewController含多个其他ViewController,每个ViewController中又包含了一个UITableView 问题:无法通过点击状态栏,让当前UITableView内容置顶 原因:UIPageViewController帮助我们管理了多个ViewController,本质上在UIPageViewController的view中包含多多个ViewController中的UITableView.由于每个UITableView的scrollsToT

[Android新手区] android里面EditTex多行输入及输入置顶问题

在麦子学院android交流群里面有人问edittex多行输入及输入置顶的问题,其实这个效果很好的实现的,现在跟说说: 在EditText里面添加android:minLines="3"即可,但是现实效果如下: 如果想要使输入从顶部开始,可以在xml文件里面添加一句 android:gravity="Top"即可.效果如下:

页面开启自启动置顶显示,页面持续获得焦点

首先讲一下本文的使用背景,现有以下需求: 将一个展示页面开机后自动全屏显示,要求运行期间不允许有任何弹窗弹出遮挡住页面,且页面应保持焦点以保证键盘可以操作页面. 开机自动启动我们可以将需要打开的页面的快捷方式或其他自启动的软件放在系统启动文件夹中,路径如下所示: C:\Users\WindowsUserNmae\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 其中"WindowsUserNmae"为使用电脑的用

WordPress 一键置顶文章(推荐用SM Sticky Clicky Star)

在 WordPress入门 之 发布新文章和管理文章 中,倡萌已经简单提到可以在文章编辑界面或者快速编辑界面设置置顶文章,但是如果你想在后台文章列表中添加一键置顶文章的功能,不妨试试 Quick Sticky 或 SM Sticky Clicky Star 插件. Quick Sticky 和 SM Sticky Clicky Star 都是用来给后台文章列表添加一键置顶文章功能的,一个较大的不同是,SM Sticky Clicky Star 支持 Ajax 无刷新设置,而 Quick Stic

变量声明置顶规则、函数声明及函数表达式和函数的arguments属性初始化

一.变量声明和变量赋值: if (!("a" in window)) { var a = 1; } alert(a);//a为? 你可能认为alert出来的结果是1,然后实际结果是"undefined".要了解为什么,我们需要知道JavaScript里的3个概念: 1.所有的全局变量都是window的属性,语句 var a = 1;等价于window.a = 1; 可以用如下方式来检测全局变量是否声明: "变量名称" in window 2.声明

019 [工具软件]窗体置顶 DeskPins

DeskPins:Windows下将任何窗体置顶的工具 官方主页:https://efotinis.neocities.org/deskpins/index.html 官方下载的是一个exe安装包,用7zip直接提取即可用,不需要安装. 该软件使用简单,双击运行以后,单击托盘图标,鼠标变成一个图钉的样式,然后点击你想置顶的窗体任何部位即可. 窗体置顶以后,在右上角显示一个红色的图钉. 单击窗体右上角的红色图钉,即可取消置顶.此操作也可以通过快捷键ctrl+f11设置. 该软件作者已经开源,网址:

Tableciew的基本属性和侧滑(删除 置顶 更多)

#import <UIKit/UIKit.h> //使用tableview必须遵循的 @interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate> @property(strong,nonatomic) UITableView *tableview; //数据源 @property(strong,nonatomic) NSArray *students; @end #i