社区讨论

全RE求助

P2573[SCOI2012] 滑雪参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo9bh9ge
此快照首次捕获于
2023/10/28 08:41
2 年前
此快照最后确认于
2023/10/28 08:41
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100002
#define int long long
int n,m,u,v,k,need,cntt,mm,mm2,hd[MAXN],hd2[MAXN],ans,ct,qwq,ftr[MAXN],h[MAXN],maxx=-1;
bool pdd[MAXN];
int read()
{
	int p=0,flg=1;
	char c=getchar();
	while(c<'0'||c>'9')
	{
		if(c=='-') flg=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9')
	{
		p=p*10+c-'0';
		c=getchar();
	}
	return p*flg;
}
void write(int x)
{
	if(x<0)
	{
		x=-x;
		putchar('-');
	}
	if(x> 9)
		write(x/10);
	putchar(x%10+'0');
}
struct Node{int st,ed,w,nt;} b[MAXN],b2[MAXN];
bool cmp(Node a,Node b){return a.w,b.w;}
int Get_Father(int x){return x==ftr[x]?x:ftr[x]=Get_Father(ftr[x]);}
void dfs(int nw)
{
	pdd[nw]=true;
	qwq++;
	for(int i=hd[nw];i;i=b[i].nt)
	{
		b2[++mm2]=(Node){b[i].st,b[i].ed,b[i].w,hd2[b[i].st]};
        hd2[b[i].st]=mm2;
        if(!pdd[b[i].ed]) dfs(b[i].ed);
	}
}
signed main()
{
	n=read();
	m=read();
	for(int i=1;i<=n;i++)
	{
		h[i]=read();
		ftr[i]=i;
	}
	while(m--)
	{
		u=read();
		v=read();
		k=read();
		if(h[u]>=h[v])
		{
            b[++mm]=(Node){u,v,k,hd[u]};
            hd[u]=mm;
        }
        if(h[u]<=h[v])
		{
            b[++mm]=(Node){v,u,k,hd[v]};
            hd[v]=mm;
        }
	}
	dfs(1);
	write(qwq);
	printf(" ");
	sort(b2+1,b2+mm2+1,cmp);
	for(int i=1;i<=mm2;i++)
	{
		if(Get_Father(b2[i].st)!=Get_Father(b2[i].ed))
		{
			ftr[Get_Father(b2[i].st)]=Get_Father(b2[i].ed);
			ct+=b2[i].w;
			qwq--;
			if(qwq<2) break;
		}
	}
	write(ct);
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...