NOIP201307貨車運輸

?

試題描述
A 國有n座城市,編號從1到n,城市之間有m條雙向道路。每一條道路對車輛都有重量限制,簡稱限重。現在有q輛貨車在運輸貨物,司機們想知道每輛車在不超過車輛限重的情況下,最多能運多重的貨物。
輸入
第一行有兩個用一個空格隔開的整數n,m,表示A國有n座城市和m條道路。接下來m行每行3個整數x、y、z,每兩個整數之間用一個空格隔開,表示從x號城市到y號城市有一條限重為z的道路。注意:x不等于y,兩座城市之間可能有多條道路。接下來一行有一個整數q,表示有q輛貨車需要運貨。接下來q行,每行兩個整數x、y,之間用一個空格隔開,表示一輛貨車需要從x城市運輸貨物到y城市,注意:x不等于y。
輸出
共有q行,每行一個整數,表示對于每一輛貨車,它的最大載重是多少。如果貨車不能到達目的地,輸出-1。
輸入示例
4?3
1?2?4
2?3?3
3?1?1
3
1?3
1?4
1?3
輸出示例
3
-1
3
其他說明
數據范圍:0<n<10,000,0<m<50,000,0<q<30,000,0≤z≤100,000。

這里用了某神犇論文中的解法。

首先做一遍最大生成樹,那么問題轉化成了樹上路徑查詢最小值,我們考慮用按秩合并的并查集來做。

做最大生成樹當合并節點(x,y)時,考慮將x的fa設為y,并記錄v[x]=e[i].w。

那么詢問時我們先判斷兩點是否在同一連通分量中,然后因為按秩合并的樹高最多是logn的,暴力向上找并更新答案即可。

#include<cstdio>
#include<cctype>
#include<queue>
#include<cstring>
#include<algorithm>
#define rep(s,t) for(int i=s;i<=t;i++)
#define ren for(int i=first[x];i!=-1;i=next[i])
using namespace std;
inline int read() {int x=0,f=1;char c=getchar();for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;for(;isdigit(c);c=getchar()) x=x*10+c-'0';return x*f;
}
const int maxn=50010;
struct Edge {int u,v,w;bool operator < (const Edge& ths) const {return w>ths.w;}
}e[maxn];
int n,m,q,pa[maxn],rk[maxn],v[maxn];
int findset(int x) {return x==pa[x]?x:findset(pa[x]);}
int get(int x,int& d) {if(x==pa[x]) return x;d++;return get(pa[x],d);
}
int main() {n=read();m=read();rep(1,n) pa[i]=i;rep(1,m) e[i].u=read(),e[i].v=read(),e[i].w=read();sort(e+1,e+m+1);rep(1,m) {int x=findset(e[i].u),y=findset(e[i].v);if(x!=y) {if(rk[x]>rk[y]) swap(x,y);pa[x]=y;v[x]=e[i].w;if(rk[x]==rk[y]) rk[y]++;}}q=read();while(q--) {int d1=0,d2=0,ans=1e9;int x=read(),y=read();if(get(x,d1)==get(y,d2)) {if(d1<d2) swap(x,y),swap(d1,d2);rep(1,d1-d2) ans=min(ans,v[x]),x=pa[x];while(x!=y) {ans=min(ans,min(v[x],v[y]));x=pa[x];y=pa[y];}printf("%d\n",ans);}else puts("-1");}return 0;
}
View Code

?

轉載于:https://www.cnblogs.com/wzj-is-a-juruo/p/4624231.html

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

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

相關文章

knime如何連接mysql_knime怎么連接MySQL?

首先判斷一下網絡是否通&#xff1a;如果在局域網相同網段內那網絡是通的&#xff0c;不同網段間需要看是否有做隔離&#xff0c;如果沒有隔離&#xff0c;那就也是通的。測試方法可以用telnet 數據庫IP 數據庫端口號的方式探測一下 例如 telnet 192.168. 1.124 3306創建用戶&a…

Asp.net Vnext IValueProvider

概述 本文已經同步到《Asp.net Vnext 系列教程 》中] IValueProvider 根據ValueProvider獲取數據&#xff0c;在對數據進行綁定 代碼實現 private class CustomValueProvider : IValueProvider{//判斷否具有指定的前綴public Task<bool> ContainsPrefixAsync(string pref…

ECNUOJ 2615 會議安排

會議安排 Time Limit:1000MS Memory Limit:65536KBTotal Submit:451 Accepted:102 Description 科研人員與相關領域的國內外同行進行適時的接觸與充分的交流&#xff0c;對于促進提高他們的科研業務水平&#xff0c;并及時掌握科研動態是十分必要而且重要的。ECNU為了走在科技…

Kafka架構設計:分布式發布訂閱消息系統

【http://www.oschina.net/translate/kafka-design】&#xff08;較長&#xff1a;很詳細的講解&#xff09; 【我們為什么要搭建該系統】用作LinkedIn的活動流&#xff08;activity stream&#xff09;和運營數據處理管道&#xff08;pipeline&#xff09;的基礎。作為多種類型…

拼團php開發邏輯思維羅振宇_2019羅胖羅振宇跨年演講手動整理稿,看了兩遍

2019羅胖羅振宇跨年演講看了兩遍&#xff0c;手動整理文檔1.歲月不饒人&#xff0c;我們也沒饒了歲月2.你有你的計劃&#xff0c;原來這個世界另有計劃&#xff0c;既然這個世界另有計劃&#xff0c;我們就得重做計劃3.做事的人和不做事的人4.宏觀是我們必須忍受的&#xff0c;…

URLConnection

轉載&#xff08;http://www.cnblogs.com/shyang--TechBlogs/archive/2011/03/21/1990525.html&#xff09; 關于URLConnection&#xff0c;網上很多回答都是對API的翻譯&#xff0c;很崩潰&#xff0c;我是看了很多之后&#xff0c;然后看API才發現的。此后我會吸取教訓&#…

java文件拷貝_Java實現文件拷貝的4種方法

第一種方法:古老的方式public static long forJava(File f1,File f2) throws Exception{long timenew Date().getTime();int length2097152;FileInputStream innew FileInputStream(f1);FileOutputStream outnew FileOutputStream(f2);byte[] buffernew byte[length];while(tru…

今夜的硬件之旅

6腳繼電器&#xff1a; 匯科繼電器HK4100F-DC6V-SHG ①3A觸點切換能力 ②具有一組常開&#xff0c;一組轉換觸點形式 ③超小型&#xff0c;標準印刷制版引出腳 ④有塑封型 Outline&#xff08;L*W*H&#xff09;外形尺寸&#xff1a;15.510.511.8 Contact Date觸電形式&#…

mp3 pcm java_Java mp3文件轉pcm文件

Java mp3文件轉pcm文件package cn.zpy.util;import java.io.File;import java.io.IOException;import javax.sound.sampled.AudioFileFormat;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;imp…

有1~5000一組亂序數列,請使用偽代碼對該數進行排列

先把1-5000組成一個數組 冒泡排序法 $arrarray(1,2,3,4,5,6,7,8,9.....5000); $totalcount($arr); For($i0;$i<$total;$i){ For($j0;$j<$total-1;$j){ If($arr[$j]>$arr[$j1]){ $tmp$arr[$i]; $arr[$j]$arr[$j1]; $arr[$j1]$tmp; } } } 快速排序法 $arrarray(1,2,3,4,…

java 類型轉換方法_java數據類型轉換的常見方法

public class Testfun {public static void main(String[] args) {// (一)跨Number父類的類型轉換// 1、str轉int > Integer.parseInt(s1)String s1 "19";int i2 Integer.parseInt(s1);// 數字str轉化為對標的intSystem.out.println("i2" (i2));// 2…

json to java 在線_Json轉Java對象 (全網最簡版)

Json2Java(全網最簡版)json字符串轉Java對象,生成對應文件描述&特點簡易的Json轉Java工具,滿足基本日常使用(特殊需求可自行增添,代碼就一頁)在網上找了好些個這類工具,不是只暴露iead插件就是復雜&沒文檔,于是自己寫了個全網最簡版Json2Javaonly one file用法public c…

Material design 色彩

八月已過去&#xff0c;九月剛來到~暑假已過去~九月上學季~~又迎來了一個桂花飄香的季節&#xff0c;你是否有了新的目標和計劃~~所以在九月初始給大家帶來一個全新的東西&#xff08;ps&#xff1a;對于我來說是全新的東西&#xff09;——Material Design~~九月讓我們一起好好…

java logging api_Java Logging API - Tutorial

1.2. 創建一個logger包 java.util.logging提供了日志的功能&#xff0c;可以使用類似于下面的代碼來創建一個logger&#xff1a;import java.util.logging.Logger;private final static Logger LOGGER Logger.getLogger(MyClass.class .getName());1.3. LevelLog的等級反映了問…

內存查看工具RAMMAP說明

參考 Technet Process Private: 分配給單一Process專用的內存 Mapped File: 用來儲放檔案內容快取(Cache)的內存空間 Shared Memory: 標注給多個Process共用的內存分頁(Page&#xff0c;內存管理單位) Page Table: 用來描述虛擬內存位址的分頁表(裡面是一筆一筆的PTE&…

php接口和java接口_java和php接口的區別是什么

java和php接口的區別是&#xff1a;1、php接口中的抽象方法只能是public的&#xff0c;默認也是public權限&#xff1b;2、java中私有方法使用private修飾&#xff0c;供接口中的默認方法或者靜態方法調用。【相關學習推薦&#xff1a;php編程(視頻)】php:規范&#xff1a;接口…

成都優步uber司機第四組獎勵政策

萬能的優步成都團隊放出了優步司機第四組&#xff0c;一二三組獎勵已經驟降&#xff0c;在月末放出第四組車主檔&#xff0c;這是要讓一切歸于平靜的節奏么&#xff01;&#xff01;&#xff01; 滴滴快車單單2.5倍&#xff0c;注冊地址&#xff1a;http://www.udache.com/如何…

java hql多條件查詢_使用hql語句怎樣實現多條件查詢

展開全部這里只寫了DAO和業務62616964757a686964616fe59b9ee7ad9431333264623331邏輯組件、ACTION的具體實現類&#xff0c;PO和和接口自己應該會寫吧&#xff0c;HQL采用的是結合SQL的那種寫法&#xff0c;增刪改查全在里面了&#xff0c;修改下馬上就能跑了&#xff0c;不清楚…

BZOJ 1008 [HNOI2008]越獄

1008: [HNOI2008]越獄 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 5166 Solved: 2242[Submit][Status][Discuss]Description 監獄有連續編號為1...N的N個房間&#xff0c;每個房間關押一個犯人&#xff0c;有M種宗教&#xff0c;每個犯人可能信仰其中一種。如果相鄰房間…

android mysql開發工具_Android開發工具--adb的使用

adb(Android Debug Bridge)是Android提供的一個通用的調試工具&#xff0c;借助這個工具&#xff0c;我們可以管理設備或手機模擬器的狀態。還可以進行以下的操作&#xff1a;1、快速更新設備或手機模擬器中的代碼&#xff0c;如應用或Android系統升級&#xff1b;2、在設備上運…