日韩性视频-久久久蜜桃-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| 欧美国产日韩在线视频 | 成人五区 | 自拍三级视频 | 国产精品国产三级国产Av车上的 | 动漫av网站 | 久久精品国产99久久不卡 | 欧美丰满老妇熟乱xxxxyyy | 亚洲精品久久久久久无码色欲四季 | 五月天狠狠干 | 久久视频免费观看 | 影音先锋成人网 | 精品一区二区视频 | 国产一区二区视频免费观看 | 国产一区二区视频在线免费观看 | 日本最新中文字幕 | 99精品视频免费在线观看 | 456亚洲影视 | 色哟哟av | www,久久久| 国产精品自拍小视频 | 不卡av电影在线 | 黄色一级视频网站 | 国产日韩欧美视频 | 91麻豆免费视频 | 午夜日韩视频 | 国产99色 | 99久久久精品免费观看国产 | 黑色丝袜吻戏亲胸摸腿 | 国产又粗又黄又爽又硬 | 性欧美video另类hd尤物 | 97国产精东麻豆人妻电影 | 少妇粉嫩小泬喷水视频www | 致单身男女免费观看完整版 | 欧亚乱熟女一区二区在线 | 欧美另类在线视频 | 日韩精品久久久久久久酒店 | 欧美激情久久久久 | 牛牛视频在线观看 | 91欧美一区二区 | 国产97超碰 | 国产二区视频在线观看 | 曰韩av| 亚洲精品一区二区三区中文字幕 | 九九黄色片 | 国产在线观看成人 | 男女超爽视频免费播放 | 在线免费日本 | 风流僵尸艳片a级 | 美女一二三区 | √天堂8资源中文在线 | 欧美精品成人一区二区在线观看 | 欧美日韩精品中文字幕 | 亚洲少妇自拍 | 久久看av | 精品国产欧美一区二区三区成人 | jzjzjz欧美丰满少妇 | 亚洲国产日韩欧美一区二区三区 | 少妇裸体性生交 | 一区二区日本 | cao在线 | 欧美人与性动交α欧美片 | 懂色av一区二区夜夜嗨 | 亚洲高清不卡 | 久久黄色录像 | 大地资源在线观看免费高清版粤语 | 韩国av免费在线观看 | 在线看片黄 | 亚洲大尺度视频 | 写真福利片hd在线播放 | 一级黄色免费看 | 日韩免费福利视频 | 日本一级黄色录像 | 日韩女同强女同hd | 久久av综合网 | 成人欧美一区二区三区在线观看 | 欧美一区自拍 | 日本一级片在线观看 | 初尝黑人巨炮波多野结衣 | 免费在线观看的黄色网址 | 久久天天干 | japanese中文字幕 | www.桃色| 精品视频不卡 | 懂色av一区二区三区免费观看 | 91美女片黄在线观看游戏 | 一区二区美女 | 中文精品久久 | 日韩精品成人无码专区免费 | 久久精品a亚洲国产v高清不卡 | 色屁屁ts人妖系列二区 | a v在线视频| 日韩一区二区高清视频 | 999xxxx | 手机看片国产精品 |