如何申请自己的网站哪里有网站制作平台
news/
2025/9/23 14:48:37/
文章来源:
如何申请自己的网站,哪里有网站制作平台,校园网站建设合同百度文库,网络宣传方式正题
题目链接:https://www.luogu.com.cn/problem/P4180 题目大意 nnn个点mmm条边的一张无向图#xff0c;求它的严格次小生成树。 1≤n≤105,1≤m≤31051\leq n\leq 10^5,1\leq m\leq 3\times 10^51≤n≤105,1≤m≤3105 解题思路
一定存在一种严格次小生成树和最小生成树只…正题
题目链接:https://www.luogu.com.cn/problem/P4180 题目大意
nnn个点mmm条边的一张无向图求它的严格次小生成树。
1≤n≤105,1≤m≤3×1051\leq n\leq 10^5,1\leq m\leq 3\times 10^51≤n≤105,1≤m≤3×105 解题思路
一定存在一种严格次小生成树和最小生成树只差一条边感性理解的话大概就是如果有两条不同那么肯定有一条可以替换成另一条要么更优要么不变。
所以我们可以枚举一条不选的边(u,v,w)(u,v,w)(u,v,w)然后找到最小生成树上u,vu,vu,v路径最大的权值kkk替换。
但是发现有可能恰好wkwkwk所以我们不只需要统计最大的权值还要统计一个严格次大的如果等于就选择严格次大的。
时间复杂度O(nlogn)O(n\log n)O(nlogn) code
#includecstdio
#includecstring
#includealgorithm
#define ll long long
using namespace std;
const ll N1e510,T18;
struct enode{ll x,y,w,v;
}e[3*N];
struct node{ll to,next,w;
}a[N1];
ll n,m,tot,ls[N],fa[N],dep[N];
ll ans,sum,f[N][T],g[N][T][2];
bool cmp(enode x,enode y)
{return x.wy.w;}
ll find(ll x)
{return (fa[x]x)?x:(fa[x]find(fa[x]));}
void addl(ll x,ll y,ll w){a[tot].toy;a[tot].nextls[x];ls[x]tot;a[tot].ww;return;
}
void dfs(ll x,ll fa){dep[x]dep[fa]1;for(ll ils[x];i;ia[i].next){ll ya[i].to;if(yfa)continue;f[y][0]x;g[y][0][0]a[i].w;dfs(y,x);}return;
}
void calc(ll mx,ll mi,ll x){if(xmx)mimx,mxx;else if(xmix!mx)mix;return;
}
void calccc(ll x,ll y,ll w){if(xy)return;if(dep[x]dep[y])swap(x,y);ll mx-1,mi-1;for(ll iT-1;i0;i--)if(dep[f[y][i]]dep[x]){calc(mx,mi,g[y][i][0]);calc(mx,mi,g[y][i][1]);yf[y][i];}if(x!y){for(ll iT-1;i0;i--)if(f[x][i]!f[y][i]){calc(mx,mi,g[x][i][0]);calc(mx,mi,g[x][i][1]);calc(mx,mi,g[y][i][0]);calc(mx,mi,g[y][i][1]);xf[x][i];yf[y][i];}calc(mx,mi,g[x][0][0]);calc(mx,mi,g[x][0][1]);calc(mx,mi,g[y][0][0]);calc(mx,mi,g[y][0][1]);}if(w!mx)ansmin(ans,sumw-mx);else if(mi0)ansmin(ans,sumw-mi);return;
}
signed main()
{scanf(%lld%lld,n,m);for(ll i1;im;i)scanf(%lld%lld%lld,e[i].x,e[i].y,e[i].w);sort(e1,e1m,cmp);for(ll i1;in;i)fa[i]i;for(ll i1;im;i){ll xfind(e[i].x),yfind(e[i].y);if(xy)continue;addl(e[i].x,e[i].y,e[i].w);addl(e[i].y,e[i].x,e[i].w);fa[x]y;e[i].v1;sume[i].w;}memset(g,-1,sizeof(g));dfs(1,1);for(ll j1;jT;j)for(ll i1;in;i){f[i][j]f[f[i][j-1]][j-1];calc(g[i][j][0],g[i][j][1],g[i][j-1][0]);calc(g[i][j][0],g[i][j][1],g[i][j-1][1]);calc(g[i][j][0],g[i][j][1],g[f[i][j-1]][j-1][0]);calc(g[i][j][0],g[i][j][1],g[f[i][j-1]][j-1][1]);}ans1e18;for(ll i1;im;i)if(!e[i].v)calccc(e[i].x,e[i].y,e[i].w);printf(%lld\n,ans);return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912889.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!