A55038 测试点#10疑似有误
原题链接:55038.程序自动分析2025-07-13 21:37:14
发布于:上海
本题目通过率为0%,并且都是栽在测试点#10上
以下是我的代码,如果有大佬看出错误请指正,谢谢:
#include<bits/stdc++.h>
using namespace std;
int n,fa[1500001];
struct node{
int u,v,type;
friend bool operator<(node a,node b){
return a.type>b.type;
}
};
vector<node> Map;
vector<int> nodes;
int get(int x){
if(fa[x]==x)
return x;
return fa[x]=get(fa[x]);
}
void merge(int x,int y){
fa[get(x)]=get(y);
}
void solve(){
Map.clear();
nodes.clear();
cin>>n;
for(int i=1;i<=n;i++){
int x,y,z;
cin>>x>>y>>z;
Map.push_back({x,y,z});
nodes.push_back(x);
nodes.push_back(y);
}
sort(nodes.begin(),nodes.end());
nodes.erase(unique(nodes.begin(),nodes.end()),nodes.end());
sort(Map.begin(),Map.end());
for(int i=0;i<nodes.size();i++)
fa[i]=i;
bool flag=1;
for(int i=0;i<Map.size();i++){
int u=lower_bound(nodes.begin(),nodes.end(),Map[i].u)-nodes.begin();
int v=lower_bound(nodes.begin(),nodes.end(),Map[i].v)-nodes.begin();
if(Map[i].type==1)
merge(u,v);
else{
if(get(u)==get(v)){
flag=0;
break;
}
}
}
if(flag==1)
cout<<"YES\n";
else
cout<<"NO\n";
return;
}
int main(){
int t;
cin>>t;
while(t--)
solve();
return 0;
}
全部评论 3
没错误
3天前 来自 浙江
0笑点解析:有负数
2025-07-15 来自 湖南
0#10过大了
2025-07-15 来自 浙江
0
有帮助,赞一个