stable_sort比sort快三倍?!
查看原帖
stable_sort比sort快三倍?!
432183
JoeBiden2020楼主2021/12/14 23:28
#include<bits/stdc++.h>
using namespace std;
struct ccf{
	int from,to,val;
}e[6001];
int fa[201],n,w,m;
inline int fuck(register int k){
	if(fa[k]==k)return k;
	else return fa[k]=fuck(fa[k]);
}
inline bool cmp(ccf nt,ccf sb){
	return nt.val<sb.val;
}
inline void addedge(register int u,register int v,register int p){
	e[++m].from=u;
	e[m].to=v;
	e[m].val=p;
}
inline void solve(){
	for(register int i=1;i<=n;i++){
		fa[i]=i;
	}
	int cnt=0,ans=0;
	stable_sort(e+1,e+m+1,cmp);//here
	for(register int i=1;i<=m;i++){
		register int x=fuck(e[i].from),y=fuck(e[i].to);
		if(x==y)continue;
		cnt++;
		ans+=e[i].val;
		fa[x]=y;
	}
	if(cnt==n-1)cout<<ans<<"\n";
	else cout<<-1<<"\n";
}
int main(){
	cin>>n>>w;
	for(register int i=1;i<=w;i++){
		register int u,v,p;
		cin>>u>>v>>p;
		addedge(u,v,p);
		solve();
	}
}

sort: 最慢1.02s TLE

加上 ios::sync_with_stdio(false) 居然变成1.05S

stable_sort: 慢300ms AC

2021/12/14 23:28
加载中...