日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu3987 最小割边数

發(fā)布時(shí)間:2025/6/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu3987 最小割边数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意:
? ? ? 是讓你求最小割之后問最小割的最少邊數(shù)是多少,因?yàn)樽钚「畈皇俏ㄒ坏?#xff0c;所以存在最小邊數(shù)的問法。


思路:
? ? ? 兩個(gè)方法,一個(gè)是先一遍最大流,然后把割邊全都改成流量1,其他的全都改成流量無窮就行了,第二個(gè)方法是比較經(jīng)典的方法,就是把權(quán)值放大 *(E+1)+1,最后在對(E+1)取余就行了,這么干其實(shí)是同時(shí)跑了兩遍最大流,只不過是兩個(gè)權(quán)值之間的差距太大,不會(huì)相互影響。



#include<queue>
#include<stdio.h>
#include<string.h>

#define N_node 1000 + 5
#define N_edge 400000 + 100
#define INF 2055000000

using namespace std;

typedef struct
{
? ?int from ,to ,next;
? ?long long ?cost;
}STAR;

typedef struct
{
? ?int x ,t;
}DEP;

STAR E[N_edge];
DEP xin ,tou;
int list[N_node] ,list2[N_node] ,tot;
int deep[N_node];

void add(int a ,int b ,long long c)
{
? ?E[++tot].from = a;
? ?E[tot].to = b;
? ?E[tot].cost = c;
? ?E[tot].next = list[a];
? ?list[a] = tot;
? ?
? ?E[++tot].from = b;
? ?E[tot].to = a;
? ?E[tot].cost = 0;
? ?E[tot].next = list[b];
? ?list[b] = tot;
}

long long minn(long long a ,long long b)
{
? ?return a < b ? a : b;
}

bool BFS_Deep(int s ,int t ,int n)
{
? ?memset(deep ,255 ,sizeof(deep));
? ?xin.x = s ,xin.t = 0;
? ?deep[s] = 0;
? ?queue<DEP>q;
? ?q.push(xin);
? ?while(!q.empty())
? ?{
? ? ? tou = q.front();
? ? ? q.pop();
? ? ??
? ? ? for(int k = list[tou.x] ;k ;k = E[k].next)
? ? ? {
? ? ? ? ?xin.x = E[k].to;
? ? ? ? ?xin.t = tou.t + 1;
? ? ? ? ?if(deep[xin.x] != -1 || !E[k].cost)
? ? ? ? ?continue;
? ? ? ? ?deep[xin.x] = xin.t;
? ? ? ? ?q.push(xin);
? ? ? }
? ?}
? ?for(int i = 0 ;i <= n ;i ++)
? ?list2[i] = list[i];
? ?return deep[t] != -1;
}

long long DFS_Flow(int s ,int t ,long long flow)
{
? ?if(s == t) return flow;
? ?long long nowflow = 0;
? ?for(int k = list2[s] ;k ;k = E[k].next)
? ?{
? ? ? list2[s] = k;
? ? ? int to = E[k].to;
? ? ? long long c = E[k].cost;
? ? ? if(deep[to] != deep[s] + 1 || !c) continue;
? ? ? long long tmp = DFS_Flow(to ,t ,minn(c ,flow - nowflow));
? ? ? nowflow += tmp;
? ? ? E[k].cost -= tmp;
? ? ? E[k^1].cost += tmp;
? ? ? if(nowflow == flow) break;
? ?}
? ?if(!nowflow) deep[s] = 0;
? ?return nowflow;
}


long long DINIC(int s ,int t ,int n)

{
? ?long long Ans = 0;
? ?while(BFS_Deep(s ,t ,n))
? ?{
? ? ? Ans += DFS_Flow(s ,t ,INF);
? ?}
? ?return Ans;
}

int main ()
{
? ? int a ,b ,c ,d;
? ? int t ,n ,m ,i ,cas = 1;
? ? scanf("%d" ,&t);
? ? while(t--)
? ? {
? ? ? ? scanf("%d %d" ,&n ,&m);
? ? ? ? memset(list ,0 ,sizeof(list));
? ? ? ? tot = 1;
? ? ? ? for(i = 1 ;i <= m ;i ++)
? ? ? ? {
? ? ? ? ? ?scanf("%d %d %d %d" ,&a ,&b ,&c ,&d);
? ? ? ? ? ?if(d) add(a + 1 ,b + 1 ,(long long)c) ,add(b + 1 ,a + 1 ,c);
? ? ? ? ? ?else add(a + 1 ,b + 1 ,(long long)c);
? ? ? ? }
? ? ? ? DINIC(1 ,n ,n);
? ? ? ? for(i = 2 ;i <= tot ;i += 2)
? ? ? ? if(!E[i].cost) E[i].cost = 1 ,E[i^1].cost = 0;
? ? ? ? else E[i].cost = INF ,E[i^1].cost = 0;
? ? ? ? printf("Case %d: %lld\n" ,cas ++ ,DINIC(1 ,n ,n));
? ? ?}
? ? ?return 0;
} ? ??
? ??


#include<queue>
#include<stdio.h>
#include<string.h>

#define N_node 1000 + 5
#define N_edge 400000 + 100
#define INF 205500000000000//這個(gè)地方記得開大點(diǎn),因?yàn)榉糯罅藱?quán)值

using namespace std;

typedef struct
{
? ?int from ,to ,next;
? ?long long ?cost;
}STAR;

typedef struct
{
? ?int x ,t;
}DEP;

STAR E[N_edge];
DEP xin ,tou;
int list[N_node] ,list2[N_node] ,tot;
int deep[N_node];

void add(int a ,int b ,long long c)
{
? ?E[++tot].from = a;
? ?E[tot].to = b;
? ?E[tot].cost = c;
? ?E[tot].next = list[a];
? ?list[a] = tot;

? ?

? ?E[++tot].from = b;

? ?E[tot].to = a;
? ?E[tot].cost = 0;
? ?E[tot].next = list[b];
? ?list[b] = tot;
}

long long minn(long long a ,long long b)
{
? ?return a < b ? a : b;
}

bool BFS_Deep(int s ,int t ,int n)
{
? ?memset(deep ,255 ,sizeof(deep));
? ?xin.x = s ,xin.t = 0;
? ?deep[s] = 0;
? ?queue<DEP>q;
? ?q.push(xin);
? ?while(!q.empty())
? ?{
? ? ? tou = q.front();
? ? ? q.pop();
? ? ??
? ? ? for(int k = list[tou.x] ;k ;k = E[k].next)
? ? ? {
? ? ? ? ?xin.x = E[k].to;
? ? ? ? ?xin.t = tou.t + 1;
? ? ? ? ?if(deep[xin.x] != -1 || !E[k].cost)
? ? ? ? ?continue;
? ? ? ? ?deep[xin.x] = xin.t;
? ? ? ? ?q.push(xin);
? ? ? }
? ?}
? ?for(int i = 0 ;i <= n ;i ++)
? ?list2[i] = list[i];
? ?return deep[t] != -1;
}

long long DFS_Flow(int s ,int t ,long long flow)
{
? ?if(s == t) return flow;
? ?long long nowflow = 0;
? ?for(int k = list2[s] ;k ;k = E[k].next)
? ?{
? ? ? list2[s] = k;
? ? ? int to = E[k].to;
? ? ? long long c = E[k].cost;
? ? ? if(deep[to] != deep[s] + 1 || !c) continue;
? ? ? long long tmp = DFS_Flow(to ,t ,minn(c ,flow - nowflow));
? ? ? nowflow += tmp;
? ? ? E[k].cost -= tmp;
? ? ? E[k^1].cost += tmp;
? ? ? if(nowflow == flow) break;
? ?}
? ?if(!nowflow) deep[s] = 0;
? ?return nowflow;
}

long long DINIC(int s ,int t ,int n)
{
? ?long long Ans = 0;
? ?while(BFS_Deep(s ,t ,n))
? ?{
? ? ? Ans += DFS_Flow(s ,t ,INF);
? ?}
? ?return Ans;
}

int main ()
{
? ? int a ,b ,c ,d;
? ? int t ,n ,m ,i ,cas = 1;
? ? scanf("%d" ,&t);
? ? while(t--)
? ? {
? ? ? ? scanf("%d %d" ,&n ,&m);
? ? ? ? memset(list ,0 ,sizeof(list));
? ? ? ? tot = 1;
? ? ? ? for(i = 1 ;i <= m ;i ++)
? ? ? ? {
? ? ? ? ? ?scanf("%d %d %d %d" ,&a ,&b ,&c ,&d);
? ? ? ? ? ?if(d) add(a + 1 ,b + 1 ,(long long)c * 100001 + 1) ,add(b + 1 ,a +?1 ,(long long)c * 100001 + 1);
? ? ? ? ? ?else add(a + 1 ,b + 1 ,(long long)c * 100001 + 1);
? ? ? ? }
? ? ? ? printf("Case %d: %lld\n" ,cas ++ ,DINIC(1 ,n ,n) % 100001);
? ? ?}
? ? ?return 0;
} ? ??
? ??
? ??

? ??
? ??




? ??
? ??
? ??

總結(jié)

以上是生活随笔為你收集整理的hdu3987 最小割边数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本不卡不卡 | 亚色在线观看 | 免费成人美女女 | 一区二区三区在线看 | 黑人巨大精品欧美黑白配亚洲 | 色综合久久久久综合体桃花网 | 欧美日韩成人一区二区三区 | 亚洲午夜网 | 熟女少妇精品一区二区 | av片在线观看免费 | 天天操天天插天天射 | 性欧美大战久久久久久久 | 精品一区二区免费看 | 男女猛烈无遮挡免费视频 | 精品女同一区二区三区 | 嫩模一区 | 成人夜视频 | 嫩草影院久久 | 欧美aa| 疯狂撞击丝袜人妻 | 青青草毛片 | 亚洲精选一区二区三区 | 四虎影视黄色 | 免费av网站在线看 | 亚洲瘦老头同性xxxxx | 国产成a人亚洲精v品无码 | 小俊大肉大捧一进一出好爽 | 五月天丁香社区 | 欧美黄片一区二区三区 | 日本成人中文字幕 | 色老头一区二区三区在线观看 | 黄色大片aa | 91在线看片| 色老太hd老太色hd | 欧美精品一区在线发布 | 亚洲午夜免费视频 | 国产传媒在线观看 | 污视频在线观看免费 | 99久| 无码av免费毛片一区二区 | 国产在线观看免费视频软件 | 欧美10p | 成人av资源站 | 精品人妻一区二区三区久久夜夜嗨 | 九色精品 | www天堂在线 | 国产性―交―乱―色―情人 | 亚洲熟妇无码乱子av电影 | 国产精品久久综合青草亚洲AV | 性猛交ⅹxxx富婆视频 | 黄色大片在线看 | 波多野结衣视频一区 | 蜜臀av88 | 国产对白在线 | 91av视频在线观看 | 国产精品亚洲专区无码牛牛 | 美女在线一区 | 在线理论视频 | 黄色一级大片在线观看 | av短片| 东京av男人的天堂 | 高潮一区二区三区乱码 | 97日日夜夜 | 台湾佬美性中文 | 免费的一级黄色片 | 影音先锋中文在线 | 免费在线成人 | 亚洲一区二区三区精品视频 | 久久成年视频 | 欧美日韩激情 | 久久久中文网 | 久久av一区二区三 | 欧美日韩在线中文字幕 | 亚洲视频国产精品 | 超碰pron | 超碰av人人 | 国产亚洲精品久久久久久久久动漫 | 欧美一二三区 | 亚洲乱码国产乱码精品天美传媒 | 韩国一二三区 | 免费一级特黄 | 亚洲一区二区免费电影 | 成人片免费视频 | 国产麻豆剧传媒精品国产 | 一区二区三区免费毛片 | 国产激情无套内精对白视频 | 亚洲伦理一区二区三区 | av在线播放一区二区三区 | 亚洲最新在线视频 | 国产亚洲二区 | 日韩一级在线观看视频 | 福利社午夜影院 | 亚洲国产123 | 精品国产午夜福利 | av爱爱| 激情婷婷六月 | 白丝少妇 | 亚洲一级影院 | 九色在线视频 |