bzoj4144 [AMPPZ2014]Petrol 圖論 最短路 并查集

bzoj4144 [AMPPZ2014]Petrol
圖論 最短路 并查集

1、這道題我們主要就是要求出距離一個油站的最近的油站
首先我們dijkstra 求出任意一個點到 離他最近的油站的距離
2、然后會發現 如果一條邊的兩個端點 的最近油站不同的話
那么這條邊就會在這兩個油站的最短路上
3、然后對于每一條邊 我們將他的權值 變為
dis[ u ] + dis[ v ] + e[ i ][ j ]
如果u與v最近油站相同 那么這個無意義
如果不同 那么久表示 u 最近油站 到 v 最近油站的最近距離
4、然后我們就 排下序
離線做 取出 滿足 最多加油的邊 并查集 維護一下連通性就行了

?

?

  1 #include <bits/stdc++.h> 
  2 using namespace std ; 
  3 
  4 const int N = 200011,inf = 1e9 ; 
  5 struct edge{
  6     int to,pre,val ; 
  7 }e[N*2];
  8 struct ek{
  9     int x,y,dis ; 
 10 }te[N];
 11 int vis[N],head[N],dis[N],c[N],ans[N],fa[N],rank[N] ; 
 12 int n,m,Q,s,cnt,now ; 
 13 
 14 struct node{
 15     int val,pos ; 
 16 }p ;
 17 struct cmp{
 18     bool operator() (node a,node b ) 
 19     {
 20         return a.val > b.val ; 
 21     }
 22 }; 
 23 struct qu{
 24     int s,t,b,id ; 
 25 }q[N] ;
 26 
 27 inline int read() 
 28 {
 29     int x = 0 , f = 1 ; 
 30     char ch = getchar() ; 
 31     while(ch<'0'||ch>'9') { if(ch=='-') f = -1 ; ch = getchar() ; } 
 32     while(ch>='0'&&ch<='9') { x = x * 10+ch-48 ; ch = getchar() ; } 
 33     return x * f ; 
 34 }
 35 
 36 inline void add(int x,int y,int v) 
 37 { 
 38     e[++cnt].to = y ;  
 39     e[cnt].pre = head[x] ; 
 40     e[cnt].val = v ; 
 41     head[ x ] = cnt ; 
 42 }
 43 
 44 inline void dij() 
 45 {
 46     priority_queue <node,vector<node>,cmp> Q ; 
 47     for(int i=1;i<=n;i++) vis[ i ] = 0 ,dis[ i ] = inf ; 
 48     int u,v ;  
 49     for(int i=1;i<=s;i++) 
 50     {
 51         p.val = 0 ; p.pos = c[ i ] ; 
 52         Q.push(p) ; dis[ c[ i ] ] = 0 ; 
 53      } 
 54     while(!Q.empty()) 
 55     {
 56         u = Q.top().pos ; 
 57         Q.pop() ; 
 58         if( vis[ u ] ) continue ;  
 59         vis[ u ] = 1 ; 
 60         for(int i=head[u];i;i=e[i].pre) 
 61         {
 62             v = e[ i ].to ; 
 63             if( dis[ u ] + e[ i ].val < dis[ v ] ) 
 64             {
 65                 dis[ v ] = dis[ u ] + e[ i ].val ; 
 66                 p.pos = v ; p.val = dis[ v ] ; 
 67                 Q.push( p ) ;  
 68             }
 69         }
 70     }    
 71 }
 72 
 73 inline bool cmp1(ek a,ek b) { return a.dis < b.dis ; } 
 74 inline bool cmp2(qu a,qu b) { return a.b < b.b ; } 
 75 
 76 inline int find(int x) 
 77 {
 78     if(x==fa[x]) return x ; 
 79     return fa[ x ] = find(fa[x]) ; 
 80 }
 81 
 82 inline void Union(int x,int y) 
 83 {
 84     x = find(x) ; y = find(y) ; 
 85     if(x==y) return ; 
 86     if(rank[ x ] > rank[ y ]) swap(x,y) ; 
 87     fa[ x ] = y ; 
 88     rank[y]+= rank[x]==rank[y] ; 
 89 }
 90 
 91 int main() 
 92 {
 93     n = read() ; s = read() ; m = read() ; 
 94     for(int i=1;i<=s;i++) c[ i ] = read() ; 
 95     int x,y,v ; 
 96     for(int i=1;i<=m;i++) 
 97     {
 98         x = read() ; y = read() ; v = read() ; 
 99         te[ i ] = (ek){ x,y,v } ; 
100         add(x,y,v) ; 
101         add(y,x,v) ; 
102     }
103     dij() ; 
104     for(int i=1;i<=m;i++) 
105         te[ i ].dis = dis[ te[ i ].x ] + dis[ te[ i ].y ] + te[ i ].dis; 
106     Q = read() ;  
107     for(int i=1;i<=Q;i++) 
108         q[ i ].s = read() ,q[ i ].t = read() ,q[ i ].b = read(),q[ i ].id = i ; 
109         
110     for(int i=1;i<=n;i++) 
111         fa[ i ] = i ,rank[ i ] = 0 ; 
112     sort( te+1,te+m+1,cmp1 ) ; 
113     sort( q+1,q+Q+1,cmp2 ) ; 
114     now = 1 ; 
115     for(int i=1;i<=Q;i++) 
116     {
117         while(now<=m&&te[ now ].dis <= q[ i ].b) 
118         {
119             Union( te[ now ].x,te[ now ].y ) ; 
120             now++ ; 
121         }    
122         ans[ q[ i ].id ] = find( q[ i ].s ) == find(q[ i ].t) ; 
123     }
124     for(int i=1;i<=Q;i++) 
125         puts(ans[ i ] ? "TAK" : "NIE" ) ; 
126      return 0 ; 
127 }

?

轉載于:https://www.cnblogs.com/third2333/p/7149250.html

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

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

相關文章

python函數理解,python對函數的理解

函數函數可以提高編寫代碼效率、代碼的重用、讓程序更小、模塊化可以將一段獨立功能的代碼集成在一個塊中、封裝獨立功能# 函數定義(參數名為形式參數)def 函數名(參數名):函數體# 調用函數(享受封裝的成功)函數名(實際參數)例&#xff1a;print函數print(sep,end) sep(元素中分…

06:空格分隔輸出

描述 讀入一個字符&#xff0c;一個整數&#xff0c;一個單精度浮點數&#xff0c;一個雙精度浮點數&#xff0c;然后按順序輸出它們&#xff0c;并且要求在他們之間用一個空格分隔。輸出浮點數時保留6位小數。 輸入共有四行&#xff1a;第一行是一個字符&#xff1b;第二行是一…

iOS開發UI篇—九宮格坐標計算

iOS開發UI篇—九宮格坐標計算 一、要求 完成下面的布局 二、分析 尋找左邊的規律&#xff0c;每一個uiview的x坐標和y坐標。 三、實現思路 (1)明確每一塊用得是什么view (2)明確每個view之間的父子關系&#xff0c;每個視圖都只有一個父視圖&#xff0c;擁有很多的子視圖。 (3)…

工業4.0時代企業如何用CRM實現模式變革

當前&#xff0c;全球經濟正處于變革的巨大浪潮之中&#xff0c;對于制造業來說&#xff0c;德國提出工業4.0&#xff0c;美國提出工業互聯網&#xff0c;而我國&#xff0c;正在大力推進“中國制造2025”。制造業實現轉型升級勢在必行。我國政府提出&#xff0c;要大力支持傳統…

oracle 9.2.0.2,在RedHat enterprise server 3 安裝oracle9i 2.0.0.1 并升級到9.2.0.6

oracle9i 2.0.4上個月從oracle網站下載沒有安裝在els3上。參考了網上的一些文章&#xff0c;并根據文章的提示找了一些資料和補丁&#xff0c;完成了這次的安裝。[more]1.安裝RedHat EL3現在的安裝界面都做的很好了,一路NEXT就可以安裝了.如果有困難,請參考其他linux安裝文檔進…

spring -mvc 將對象封裝json返回時刪除掉對象中的屬性注解方式

spring -mvc 將對象封裝json返回時刪除掉對象中的屬性注解方式 在類名,接口頭上注解使用在 JsonIgnoreProperties(value{"comid"}) //希望動態過濾掉的屬性 例 JsonIgnoreProperties(value{"comid"}) public interface 接口名稱{ } JsonIgnorePro…

HawkHost老鷹主機更換主域名方法

http://www.yd631.com/change-hawkhost-primary-domain/圣誕節優惠期間&#xff0c;很多童鞋們購買了老鷹主機&#xff0c;可能由于大家初次使用海外主機或者是CP面板的空間。購買主機的時候主域名是隨便輸入的或者是輸入后想換一個。我們可以通過以下方法進行操作。之前我們QQ…

ERP CRM與SCM整合過程中的知識轉移

ERP(Enterprise Resource Planning&#xff0c;企業資源計劃)、CRM(Customer Relationship Management&#xff0c;客戶關系管理)、SCM、CRM(Customer Relationship Management&#xff0c;客戶關系管理)、SCM(supply chain management&#xff0c;供應鏈管理)作為現代企業管理…

ubuntu 64 12.04 oracle,ubuntu server 12.04 x86_64 下安裝oracle xe 11 x86_64

1.下載oracle xe我下載的是oracle-xe-11.2.0-1.0.x86_64.rpm.zip2. 安裝必要程序或文件$sudo apt-get install unzip chkconfig libaio1 alien3.解壓上面的oraclexxx.zip文件,然后進行轉換$sudo alien -d --scripts oracle-xe-11.2.0-1.0.x86_64.rpm上面轉換完成后會生成一個 o…

IEnumerable 遍歷用法

咋一看到IEnumerable這個接口&#xff0c;我們可能會覺得很神奇&#xff0c;在一般的編程時&#xff0c;基本上我們是想不到去用它的&#xff0c;可是&#xff0c;俗話說得好&#xff0c;存在便是道理&#xff0c;那么&#xff0c;它對我們來說&#xff0c;能夠帶來哪些奇妙的事…

DELPHI設置枚舉類型size

delphi枚舉類型長度默認為2個字節(單字)&#xff0c;而在C中枚舉為4個字節(雙字)&#xff0c;如果需要跨這兩個平臺編程&#xff0c;傳輸結構時會由于數據長度不一造成災難。 經過查找資料&#xff0c;原來delphi可以通過{$Z} {$Z-} {$Z1} {$Z4} 等宏設置枚舉類型的長度&#x…

Nginx 反向代理 websocket 協議

為什么80%的碼農都做不了架構師&#xff1f;>>> 主要配置內容 server {listen 80;server_name xxx.xxx.xxx;location / {try_files $uri $uri/ /index.html;root /workspace/www;index index.html index.htm;}location ^~/letchat/ {proxy_pass http:/…

oracle中區間大小,Oracle的邏輯結構(表空間、段、區間、塊)——總結

Oracle邏輯結構全景結構圖以下為個人整理的一些關于Oracle邏輯結構的相關數據字典&#xff1a;SELECT * FROMDBA_TABLESPACES--記錄各個表空間的詳細信息SELECT * FROMDBA_TABLESPACE_USAGE_METRICS--記錄各個表空間的使用狀況SELECT * FROMDBA_DATA_FILES --記錄各個數據文件的…

C#3.0之神奇的Lambda表達式和Lambda語句

“Lambda 表達式”是一個匿名函數&#xff0c;它可以包含表達式和語句&#xff0c;并且可用于創建委托或表達式目錄樹類型。所有 Lambda 表達式都使用 Lambda 運算符 >&#xff0c;該運算符讀為“goes to”。該 Lambda 運算符的左邊是輸入參數&#xff08;如果有&#xff09…

[C++] Nested Radical Constant

做高數助教被天煞的大一學生坑了&#xff0c;發現是個未解問題&#xff0c;沒有解析解。。 用C搞了下&#xff0c;就是這樣。。。 No closed-form expression is known for this constant (Finch 2003, p. 8; S. Plouffe, pers. comm., Aug. 29, 2008). /*********************…

api-gateway實踐(03)新服務網關 - 網關請求攔截檢查

參考鏈接&#xff1a;http://www.cnblogs.com/jivi/archive/2013/03/10/2952829.html 一、為什么要攔截檢查請求&#xff1f; 防止重放攻擊、篡改重放&#xff0c;進行使用規格檢查 1、請求可能是重放攻擊 重放攻擊的基本原理就是把以前竊聽到的數據原封不動地重新發送給接收方…

oracle存儲過程關鍵字有哪些,ORACLESTREAMS存儲過程中的一些參數有哪些?

1&#xff0c;maintain_mode參數可取golbal或transportable tablepsaces&#xff0c;當該參數取global時&#xff0c;表示streams進行全庫復制&#xff0c;否則表示streams進行表空間復制&#xff0c;需要在tablespace_names參數中指定待復制的一個或多個表空間。2&#xff0c;…

正則驗證多個郵箱用分號隔開

代碼如下&#xff1a; <script> var str xxxx126.com;123234234qq.com;xxxxxxxxxx.con.cn; var reg /^((([a-z0-9_\.-])([\da-z\.-])\.([a-z\.]{2,6}\;))*(([a-z0-9_\.-])([\da-z\.-])\.([a-z\.]{2,6})))$/; if(reg.test(str)){ alert(1); }else{ …

轉載-使用 Feed4JUnit 進行數據與代碼分離的 Java 單元測試

JUnit 是被廣泛應用的 Java 單元測試框架&#xff0c;但是它沒有很好的提供參數化測試的支持&#xff0c;很多測試人員不得不把測試數據寫在程序里或者通過其它方法實現數據與代碼的分離&#xff0c;在后續的修改和維護上有諸多限制和不便。Feed4JUnit 是開源的基于 JUnit 的擴…

青島智能院助力智慧城市 打造智能產業“黃埔軍校”

作為青島市的主干道之一&#xff0c;山東路的擁堵狀況一直讓人頭疼。近日&#xff0c;因為一種交通組織優化方案的實施&#xff0c;山東路和延吉路的通行率提高了近50%。而研發這種智能管控系統的正是位于青島高新區的青島智能產業技術研究院。截止今年5月份&#xff0c;青島智…