因换行扣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;
}
作者你解释一下 我辛辛苦苦打的换行,你还给我扣分(其实没那么辛苦) 刀飞出去了,自己躲吧