emmmm一開始是想到網路流來著???(最大流嘛233)
然後發現自己好像已經差不多忘完了???
於是開啟題解,ctrl+f,輸入網路流,好像沒有題解,於是就老老實實想正解去了。
正解:多組詢問,想想網路流也要t(ek本來就慢,其它就不說了),所以一定是還有更簡單的方法的!!!
對於每乙個點(或者說路徑),只有最小的那個邊才對答案有影響(不是嗎?)
慢著!這不是.....最小生成樹?
於是就建最小生成樹然後lca。。。。。
於是愉快地選擇kruskal和倍增lca。
於是這題就沒什麼了
**:
#includeusing(完)namespace
std;
const
int maxn=500005
;int
m,n,fat[maxn];
struct
node
a[maxn];
struct
edge
e[maxn
<<1
];int
head[maxn],cnt,vis[maxn];
inline
void addedge(int
from,int to,int
dis)
bool
cmp(node x,node y)
int find(int
x)void
kruskal()
}}int dep[maxn],f[25][maxn],w[25
][maxn];
void dfs(int u,int deep)//
預處理lca
}int lca(int a,int b)//
lca }
if(a==b)
return
ans;
for(int i=20;i>=0;i--)
}ans=min(ans,min(w[0][a],w[0
][b]));
//printf("%d ",ans);
return
ans;
}int
main()
for(int i=1;(1
}intq;
scanf("%d
",&q);
for(int i=1;i<=q;i++)
return0;
}
P1967 貨車運輸
題目 題目描述 aa國有n n座城市,編號從 1 1到 nn,城市之間有 mm 條雙向道路。每一條道路對車輛都有重量限制,簡稱限重。現在有 qq 輛貨車在運輸貨物,司機們想知道每輛車在不超過車輛限重的情況下,最多能運多重的貨物。輸入格式 第一行有兩個用乙個空格隔開的整數 n,mn,m,表示 aa 國...
P1967 貨車運輸
a 國有 n 座城市,編號從 1 到 n 城市之間有 m 條雙向道路。每一條道路對車輛都有重量限制,簡稱限重。現在有 q 輛貨車在運輸貨物,司機們想知道每輛車在不超過車輛限重的情況下,最多能運多重的貨物。第一行有兩個用乙個空格隔開的整數 n m 表示 a 國有 n 座城市和 m 條道路。接下來 m ...
P1967 貨車運輸
a 國有 n 座城市,編號從 1 到 n,城市之間有 m 條雙向道路。每一條道路對車輛都有重量限制,簡稱限重。現在有 q 輛貨車在運輸貨物,司機們想知道每輛車在不超過車輛限重的情況下,最多能運多重的貨物。第一行有兩個用乙個空格隔開的整數 n,m,表示 a 國有 n 座城市和 m 條道 路。接下來 m...