洛谷3171 網絡吞吐量(網絡流)

t開成n結果cur賦值的時候也只賦值到t令人智熄

【題目分析】

好吧我承認這個錯誤真的呵呵。。。。。。。。

題目有那~~~~~么長,然后畫畫圖這道題就基本看出正解了,再一看數據范圍,n<=500簡直良心,好了,網絡流沒得跑了。

因為按最短路進行傳遞,所以網絡流的建圖肯定是在最短路的基礎上,所以先進行一次SPFA。

考慮一條路如果加入網絡流的圖,那么這條路一定是在最短路上,dfs一次即可。

然后考慮拆點限制流量(一開始sb的寫成了邊權結果還跑過了樣例然后一交立馬咕咕),最后跑最大流即可。

PS:此題還有一個坑點,就是INF要設的很大很大,否則咕咕。

【代碼~】

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL MAXN=1e3+10;
const LL MAXM=4e5+10;
const LL INF=0x3f3f3f3f3f;LL n,m,cnt,s,t;
LL head[MAXN],cur[MAXN],depth[MAXN],val[MAXN];
LL nxt[MAXM],to[MAXM],w[MAXM];
LL cnt1,head1[MAXN];
LL nxt1[MAXM],to1[MAXM],w1[MAXM];
LL dis[MAXN],vis[MAXN];LL Read()
{LL i=0,f=1;char c;for(c=getchar();(c>'9'||c<'0')&&c!='-';c=getchar());if(c=='-')f=-1,c=getchar();for(;c>='0'&&c<='9';c=getchar())i=(i<<3)+(i<<1)+c-'0';return i*f;
}void sc(LL x)
{if(x>=10)sc(x/10);putchar(x%10+48);
}void Add1(LL x,LL y,LL z)
{cnt1++;nxt1[cnt1]=head1[x];head1[x]=cnt1;to1[cnt1]=y;w1[cnt1]=z;
}void add1(LL x,LL y,LL z)
{Add1(x,y,z);Add1(y,x,z);
}void SPFA()
{queue<LL> q;memset(dis,0x3f3f3f3f,sizeof(dis));dis[s]=0;q.push(s);while(!q.empty()){LL u=q.front();q.pop();vis[u]=0;for(LL i=head1[u];i!=-1;i=nxt1[i]){LL v=to1[i];if(dis[v]>dis[u]+w1[i]){dis[v]=dis[u]+w1[i];if(!vis[v]){vis[v]=1;q.push(v);}}}}
}void Add(LL x,LL y,LL z)
{nxt[cnt]=head[x];head[x]=cnt;to[cnt]=y;w[cnt]=z;cnt++;
}void add(LL x,LL y,LL z)
{Add(x,y,z);Add(y,x,0);
}bool bfs()
{queue<LL> q;memset(depth,0,sizeof(depth));depth[s]=1;q.push(s);while(!q.empty()){LL u=q.front();q.pop();for(LL i=head[u];i!=-1;i=nxt[i]){LL v=to[i];if(!depth[v]&&w[i]){depth[v]=depth[u]+1;q.push(v);}}}if(depth[t]==0)return false;return true;
}LL dfs(LL u,LL dist)
{if(u==t)return dist;for(LL &i=cur[u];i!=-1;i=nxt[i]){LL v=to[i];if(depth[v]==depth[u]+1&&w[i]){LL di=dfs(v,min(dist,w[i]));if(di>0){w[i]-=di;w[i^1]+=di;return di;}}}return 0;
}LL dinic()
{LL ans=0;while(bfs()){for(LL i=s;i<=t+n;++i)cur[i]=head[i];while(LL d=dfs(s,INF))ans+=d;}return ans;
}void buildgraph(LL u,LL fa)
{for(LL i=head1[u];i!=-1;i=nxt1[i]){LL v=to1[i];if(v==fa)continue;if(dis[v]==dis[u]+w1[i]){add(u+n,v,INF);buildgraph(v,u);}}
}int main()
{memset(head1,-1,sizeof(head1));memset(head,-1,sizeof(head));n=Read(),m=Read();s=1,t=n;for(LL i=1;i<=m;++i){LL x=Read(),y=Read(),z=Read();add1(x,y,z);}for(LL i=1;i<=n;++i)val[i]=Read();SPFA();buildgraph(1,-1);add(1,n+1,INF);for(LL i=2;i<n;++i)add(i,i+n,val[i]);sc(dinic());return 0;
}

?

轉載于:https://www.cnblogs.com/Ishtar/p/10010755.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250395.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250395.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250395.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DIV+CSS布局的優勢和弊端

DIVCSS的優勢1、符合W3C標準。這保證您的網站不會因為將來網絡應用的升級而被淘汰。2、對瀏覽者和瀏覽器更具親和力。由于CSS富含豐富的樣式&#xff0c;使頁面更加靈活性&#xff0c;它可以根據不同的瀏覽器&#xff0c;而達到顯示效果的統一和不變形。這樣就支持瀏覽器的向后…

Android Studio --- [學習筆記]TCP(第2彈)、GridView、ScrollView

說明 這篇主要接上一篇Android Studio — > [學習筆記]RadioButton、CheckBox、ImageView、ListView、TCP的三次握手對上面回答的細解,并用JS偽代碼,對TCP三次握手和四次揮手的簡單實現.Android的基本了解到此篇結束,后續會根據具體情況深度學習. 2.y TCP的三次握手和四次揮…

MySQL中varchar最大長度是多少

一. varchar存儲規則&#xff1a; 4.0版本以下&#xff0c;varchar(20)&#xff0c;指的是20字節&#xff0c;如果存放UTF8漢字時&#xff0c;只能存6個&#xff08;每個漢字3字節&#xff09; 5.0版本以上&#xff0c;varchar(20)&#xff0c;指的是20字符&#xff0c;無論存放…

bzoj 1232: [Usaco2008Nov]安慰奶牛cheer【最小生成樹】

有趣 每條邊在算答案的時候被算了二倍的邊權值加上兩個端點的權值&#xff0c;然后睡覺點額外加一次 所以可以用這個權做MST&#xff0c;然后加上點權最小的點 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N1…

JavaScript --- [學習筆記]觀察者模式 理解對象 工廠模式 構造函數模式

說明 本系列(JS基礎梳理)為后面TCP的模擬實現做準備本篇的主要內容: 觀察者模式、工廠模式、構造函數模式 和 對對象的理解 1. 觀察者模式 參考JavaScript設計模式 1.1 消息注冊方法 “將訂閱者注冊的消息推入到消息隊列中” [算法思路] : 在推入到消息隊列時,如果此消息…

java_day19_MVC和配置文件

簡單的MVC設計 MVC的全名是Model View Controller&#xff0c;是模型(model)&#xff0d;視圖(view)&#xff0d;控制器(controller)的縮寫&#xff0c;是一種軟件設計典范。它是用一種業務邏輯、數據與界面顯示分離的方法來組織代碼&#xff0c;將眾多的業務邏輯聚集到一個部件…

Problem I: 打印金字塔

#include<stdio.h> int main() {int n,i,j,k;scanf("%d",&n);for(i1;i<n;i){for(j1;j<n-i;j)printf(" ");for(k1;k<2*i-1;k)printf("*");printf("\n");}return 0; } HINT 用雙重循環做&#xff0c;外循環代表行數&…

webpack --- 發布環境的配置 代碼壓縮 代碼分類

說明 源代碼本篇主要對發布環境的配置說明前面2點是對webpack的一個復習.第3點開始,逐步配置部署代碼 1. Webpack發布的策略 2.1 在實際開發中,一般會有兩套方案: 開發期間的項目:包含了測試文件、測試數據、開發工具、測試工具等相關配置,有利于項目的開發和測試,但是這些文…

salesforce lightning零基礎學習(三) 表達式的!(綁定表達式)與 #(非綁定表達式)

在salesforce的classic中&#xff0c;我們使用{!expresion}在前臺頁面展示信息&#xff0c;在lightning中&#xff0c;上一篇我們也提及了&#xff0c;如果展示attribute的值&#xff0c;可以使用{!v.expresion}展示信息。 lightning在component中解析動態值的時候&#xff0c;…

sqlserver學習3---sql函數

一、SQL DML 和 DDL 可以把 SQL 分為兩個部分&#xff1a;數據操作語言 (DML) 和 數據定義語言 (DDL)。 SQL (結構化查詢語言)是用于執行查詢的語法。但是 SQL 語言也包含用于更新、插入和刪除記錄的語法。 查詢和更新指令構成了 SQL 的 DML 部分&#xff1a; SELECT - 從數據庫…

JavaScript --- [學習筆記] 原型模式

說明 接JavaScript — > [學習筆記]觀察者模式 & 理解對象 & 工廠模式 & 構造函數模式上一篇構造函數模式創建的實例,不同實例的同一個方法是不相等的,為了解決這個問題.出現了原型模式 1. 原型模式 具體做法是,不在構造函數中定義對象實例的信息,而是將這些…

網絡協議各層概述

網絡協議概述 OSI是一個開放性的通信系統互連參考模型&#xff0c;他是一個定義得非常好的協議規范。OSI模型有7層結構&#xff0c;每層都可以有幾個子層。 OSI的7層從上到下分別是 7 應用層 6 表示層 5 會話層 4 傳輸層 3 網絡層 2 數據鏈路層 1 物理層&#xff1b; 其中高層&…

A start job is running for Raise network interface(5min 13s )問題解決方法

命令&#xff1a;sudo vim /etc/systemd/system/network-online.target.wants/networking.service將里面的TimeoutStartSec5min 修改為TimeoutStartSec2sec 然后重啟系統&#xff0c;就可以生效了&#xff0c;開機速度很快 轉載于:https://www.cnblogs.com/sea-stream/p/98615…

javascript --- 實現對象的深拷貝

淺拷貝和深拷貝 淺拷貝: 只拷貝一層.當對象是復雜數據類型(Object、 Array)時,只拷貝引用深拷貝: 多層拷貝.復雜數據類型,會重新分配內存空間. 實現淺拷貝的2種方法 使用for ... in 實現 var obj {name: marron,age: 18,msg: {sex: "1" } } var o {}; for(let …

Qt與FFmpeg聯合開發指南(二)——解碼(2):封裝和界面設計

與解碼相關的主要代碼在上一篇博客中已經做了介紹&#xff0c;本篇我們會先討論一下如何控制解碼速度再提供一個我個人的封裝思路。最后回歸到界面設計環節重點看一下如何保證播放器界面在縮放和拖動的過程中保證視頻畫面的寬高比例。 一、解碼速度 播放器播放媒體文件的時候播…

Bzoj1051 受歡迎的牛

每一頭牛的愿望就是變成一頭最受歡迎的牛。現在有 N 頭牛&#xff0c;給你 M 對整數 (A,B)&#xff0c;表示牛 A 認為牛 B 受歡迎。這種關系是具有傳遞性的&#xff0c;如果 A 認為 B 受歡迎&#xff0c;B 認為 C 受歡迎&#xff0c;那么牛 A 也認為牛 C 受歡迎。你的任務是求出…

node --- 模塊加載機制

1. Node.js中模塊加載機制 1.1 模塊查找規則-當模塊擁有路徑但沒有后綴時 require(./find.js); require(./find);require方法根據模塊路徑查找模塊,如果是完整路徑,直接進入模塊如果模塊后綴省略,先找同名JS文件再找同名JS文件夾 require(./find); // 以上會先找到命令行目錄…

51Nod 蜥蜴和地下室(搜索)

哈利喜歡玩角色扮演的電腦游戲《蜥蜴和地下室》。此時&#xff0c;他正在扮演一個魔術師。在最后一關&#xff0c;他必須和一排的弓箭手戰斗。他唯一能消滅他們的辦法是一個火球咒語。如果哈利用他的火球咒語攻擊第i個弓箭手&#xff08;他們從左到右標記&#xff09;&#xff…

多線程——實現Runnable接口實現一個多線程

實現Runnable接口實現一個多線程 Runnable接口源碼&#xff1a; package java.lang; //Runnable接口源碼只有一個run方法 public interface Runnable {public abstract void run(); } 實現Runnable的兩個多線程類&#xff1a; public class RunnableThread1 implements Runnabl…

javascript --- 文件上傳即時預覽 閉包實現多圖片即時預覽

使用javascript原生功能實現,點擊上傳文件,然后再網頁上顯示出來 1. 初級顯示 1.1 準備一個input標簽和一個img標簽 <input typefile id"file"> <img id"preview" src"">1.2 js代碼如下 // 將上傳的圖片顯示到頁面上function sho…