X - Ehab and Path-etic MEXs CodeForces - 1325C
阅读原文时间:2023年07月08日阅读:1

MMP,差一点就做对了。

题目大意:给你一个树,对这个树的边进行编号,编号要求从0到n-1,不可重复,要求MEX(U,V)尽可能的小,

MEX(x,y)的定义:从x到y的简单路径上,没有出现的最小编号。

题解:

只要让0,1,2这三个号不在同一条路径上就行。

如果说是一条没有分支的树,那么无论怎么编号,MEX等于n-1。对于有分支的树,只要让他的叶子节点所连的边从小到大编号就行。。注意无向图求叶子节点的方法。。。。

度数那一步弄错了。。。

注意对小于2的树特判一下,就一条边,也就是0喽。

#include
using namespace std;
const int N=1e5+;
int arr[N];
int inv[N];
int mark[N];
struct stu {
int x,y;
}pre[N];
int main(){
int n;
cin>>n;

for(int i=;i<n;i++){  
    int x,y;  
    cin>>x>>y;  
    pre\[i\]={x,y};  
    inv\[x\]++;  
    inv\[y\]++;  
}  
if(n==) {  
    cout<<<<endl;  
    return ;  
}  
int pos=;  
for(int i=;i<=n;i++){  
    if(inv\[i\]==) {  
        mark\[i\]=pos++;  
    }  
}  
for(int i=;i<n;i++){  
    if(inv\[pre\[i\].x\]==) cout<<mark\[pre\[i\].x\]<<endl;  
    else if(inv\[pre\[i\].y\]==) cout<<mark\[pre\[i\].y\]<<endl;  
    else cout<<pos++<<endl;  
}  
return ;  

}

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章