HDU6214 Smallest Minimum Cut

题目链接:HDU6214

留一个链式前向星+Dinic模板(希望不要被某人发现,嘿嘿嘿)。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <vector>
 5 #include <queue>
 6 using namespace std;
 7 #define next Next
 8 const int inf = 0x3f3f3f3f;
 9 const int maxn=205;
10 int level[maxn];
11 int iter[maxn];
12 int head[maxn],tot;
13 struct edge{
14     int to,cap,Next;
15 } e[2005]; ///此处应为边的两倍,加一条容量为0的反向边
16 void init(){
17     memset(head,-1,sizeof(head));
18     tot=0;
19 }
20 void add(int from,int to,int cap){
21     e[tot].Next=head[from];
22     e[tot].to=to;
23     e[tot].cap=cap;
24     head[from]=tot;
25     tot++;
26 }
27 void addedge(int from,int to,int cap){
28     add(from,to,cap);
29     add(to,from,0);
30 }
31 void bfs(int s){
32     memset(level,-1,sizeof(level));
33     queue<int> q;
34     level[s]=0;
35     q.push(s);
36     while(!q.empty()){
37         int v=q.front(); q.pop();
38         for(int i=head[v];~i;i=e[i].Next){
39             edge &ed=e[i];
40             if(ed.cap>0&&level[ed.to]<0){
41                 level[ed.to]=level[v]+1;
42                 q.push(ed.to);
43             }
44         }
45     }
46 }
47 int dfs(int v,int t,int f){
48     if(v==t) return f;
49     for(int &i=iter[v];~i;i=e[i].Next){
50         edge &ed=e[i];
51         if(ed.cap>0&&level[v]<level[ed.to]){
52             int d=dfs(ed.to,t,min(f,ed.cap));
53             if(d>0){
54                 ed.cap-=d;
55                 e[i^1].cap+=d;
56                 return d;
57             }
58         }
59     }
60     return 0;
61 }
62 int max_flow(int s,int t){
63     int flow=0;
64     while(1){
65         bfs(s);
66         if(level[t]<0) return flow;
67         memcpy(iter,head,sizeof(iter));
68         int f;
69         while((f=dfs(s,t,inf))>0){
70             flow+=f;
71         }
72     }
73 }
74 int main()
75 {
76     int n,m,T;
77     scanf("%d",&T);
78     while(T--)
79     {
80         init();
81         int s,t;
82         scanf("%d %d",&n,&m);
83         scanf("%d %d",&s,&t);
84         for(int i=1;i<=m;i++)
85         {
86             int u,v,w;
87             scanf("%d %d %d",&u,&v,&w);
88             addedge(u,v,w*300+1);
89         }
90         int ans = max_flow(s,t);
91         printf("%d\n",ans%300);
92     }
93     return 0;
94 }

 

转载于:https://www.cnblogs.com/littlepear/p/7597987.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于YOLOv9实现工业布匹缺陷(破洞、污渍)检测系统python源码+详细运行教程+训练好的模型+评估 【使用教程】 一、环境配置 1、建议下载anaconda和pycharm 在anaconda中配置好环境,然后直接导入到pycharm中,在pycharm中运行项目 anaconda和pycharm安装及环境配置参考网上博客,有很多博主介绍 2、在anacodna中安装requirements.txt中的软件包 命令为:pip install -r requirements.txt 或者改成清华源后再执行以上命令,这样安装要快一些 软件包都安装成功后才算成功 3、安装好软件包后,把anaconda中对应的python导入到pycharm中即可(不难,参考网上博客) 二、环境配置好后,开始训练(也可以训练自己数据集) 1、数据集准备 需要准备yolo格式的目标检测数据集,如果不清楚yolo数据集格式,或者有其他数据训练需求,请看博主yolo格式各种数据集集合链接:https://blog.csdn.net/DeepLearning_/article/details/127276492 里面涵盖了上百种yolo数据集,且在不断更新,基本都是实际项目使用。来自于网上收集、实际场景采集制作等,自己使用labelimg标注工具标注的。数据集质量绝对有保证! 本项目所使用的数据集,见csdn该资源下载页面中的介绍栏,里面有对应的下载链接,下载后可直接使用。 2、数据准备好,开始修改配置文件 参考代码中data文件夹下的banana_ripe.yaml,可以自己新建一个不同名称的yaml文件 train:训练集的图片路径 val:验证集的图片路径 names: 0: very-ripe 类别1 1: immature 类别2 2: mid-ripe 类别3 格式按照banana_ripe.yaml照葫芦画瓢就行,不需要过多参考网上的 3、修改train_dual.py中的配置参数,开始训练模型 方式一: 修改点: a.--weights参数,填入'yolov9-s.pt',博主训练的是yolov9-s,根据自己需求可自定义 b.--cfg参数,填入 models/detect/yolov9-c.yaml c.--data参数,填入data/banana_ripe.yaml,可自定义自己的yaml路径 d.--hyp参数,填入hyp.scratch-high.yaml e.--epochs参数,填入100或者200都行,根据自己的数据集可改 f.--batch-size参数,根据自己的电脑性能(显存大小)自定义修改 g.--device参数,一张显卡的话,就填0。没显卡,使用cpu训练,就填cpu h.--close-mosaic参数,填入15 以上修改好,直接pycharm中运行train_dual.py开始训练 方式二: 命令行方式,在pycharm中的终端窗口输入如下命令,可根据自己情况修改参数 官方示例:python train_dual.py --workers 8 --device 0 --batch 16 --data data/coco.yaml --img 640 --cfg models/detect/yolov9-c.yaml --weights '' --name yolov9-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 500 --close-mosaic 15 训练完会在runs/train文件下生成对应的训练文件及模型,后续测试可以拿来用。 三、测试 1、训练完,测试 修改detect_dual.py中的参数 --weights,改成上面训练得到的best.pt对应的路径 --source,需要测试的数据图片存放的位置,代码中的test_imgs --conf-thres,置信度阈值,自定义修改 --iou-thres,iou阈值,自定义修改 其他默认即可 pycharm中运行detect_dual.py 在runs/detect文件夹下存放检测结果图片或者视频 【特别说明】 *项目内容完全原创,请勿对项目进行外传,或者进行违法等商业行为! 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值