所以我正在为即将到来的算法编程竞赛练习,我偶然发现了前一年的问题.
我几乎解决了它(在C++中),但我得到了一些超时,所以我看了官方的解决方案,它是用Dlang编写的.
然后我试图模仿官方答案在D中做了什么,但我仍然得到超时(单次输入> 4秒).Afaik,C++应该比D更快,但是D在一瞬间解决了相同的输入,C++需要超过5秒的时间
这是D答案代码
import std.stdio;
import std.algorithm;
struct edge {
int src, des, w, o;
int opCmp (ref const edge e) const {
if(w != e.w) return w - e.w;
else return o - e.o;
}
};
const int MAXN = 100004, MAXM = 200004;
int N, M, D, ee, weight, days;
int[MAXN] ds;
edge[] edges;
void init() {
for(int i=1;i<=N;i++) ds[i] = i;
}
int find(int x) {
return ds[x] = (x == ds[x] ? x: find(ds[x])); …Run Code Online (Sandbox Code Playgroud)