10分警示,换行别太过分
查看原帖
10分警示,换行别太过分
921450
Szy0720楼主2024/7/6 13:46

因换行扣90分QWQ 作者解释一下

未换行

#include<bits/stdc++.h>
using namespace std;
int n,m,cnt=1,fa[100010];
struct node{
	int x,y,t;
}q[100010];
bool cmp(node a,node b){
	return a.t<b.t;
}
int find(int x){
	if(fa[x]==x)return x;
	return fa[x]=find(fa[x]);
}
void hb(int x,int y){
	x=find(x),y=find(y);
	fa[y]=x;
}
int main(){
	for(int i=1;i<=100000;i++)fa[i]=i;
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>q[i].x>>q[i].y>>q[i].t;
	}
	sort(q+1,q+m+1,cmp);
	for(int i=1;i<=q[m].t;i++){
		while(cnt<=m&&q[cnt].t==i){
			hb(q[cnt].x,q[cnt].y);
			cnt++;
		}
		bool fl=1;
		for(int j=1;j<n;j++){
			if(find(j)!=find(j+1)){
				fl=0;
				break;
			}
		}
		if(fl){
			cout<<i<<endl;
			return 0;
		}
	}
	cout<<"-1\n";
	return 0;
}

换行了

#include<bits/stdc++.h>
using namespace std;
int n,m,cnt=1,fa[100010];
struct node{
	int x,y,t;
}q[100010];
bool cmp(node a,node b){
	return a.t<b.t;
}
int find(int x){
	if(fa[x]==x)return x;
	return fa[x]=find(fa[x]);
}
void hb(int x,int y){
	x=find(x),y=find(y);
	fa[y]=x;
}
int main(){
	for(int i=1;i<=100000;i++)fa[i]=i;
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>q[i].x>>q[i].y>>q[i].t;
	}
	sort(q+1,q+m+1,cmp);
	for(int i=1;i<=q[m].t;i++){
		while(cnt<=m&&q[cnt].t==i){
			hb(q[cnt].x,q[cnt].y);
			cnt++;
		}
		bool fl=1;
		for(int j=1;j<n;j++){
			if(find(j)!=find(j+1)){
				fl=0;
				break;
			}
		}
		if(fl){
			cout<<i;
			return 0;
		}
	}
	cout<<"-1";
	return 0;
}

作者你解释一下 我辛辛苦苦打的换行,你还给我扣分(其实没那么辛苦) 刀飞出去了,自己躲吧

2024/7/6 13:46
加载中...