UVA10054 The Necklace 题解

好可恶一道题,怎么没人告诉我输出之间有空行

思路是先抽象成图,然后跑一边dfs记录边的前后顺序。

对于不能成环的情况,只需要再开个数组记录度数判断奇点即可。

若存在奇点则break掉,剩下的跑dfs、

复制代码
//produced by miya555
//stupid mistakes:1.多测要清空 2.输出之间有空行
//ideas:dfs直接搜
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int t,n,d[N],g[N][N],flag;
void euler(int u){
    int v;
    for(v=1;v<=50;v++){
        if(g[u][v]){
            g[u][v]--;
            g[v][u]--;
            euler(v);
            cout<<v<<' '<<u<<endl;
        }
    }
}
int tmp;
int main(){
    //int u,v;
    cin>>t;
    for(int x=1;x<=t;x++){
        memset(d,0,sizeof(d));
        memset(g,0,sizeof(g));
        cout<<"Case #"<<x<<endl;
        flag=0;
        cin>>n;
        for(int i=1;i<=n;i++){
            int u,v;
            cin>>u>>v;
            d[u]++;
            d[v]++;
            g[u][v]++;
            g[v][u]++;
            tmp=u;
        }
        for(int i=1;i<=50;i++){
            if(d[i]%2==1){
                cout<<"some beads may be lost"<<endl;
                flag=1;
                break;
            }
        }
        if(!flag) euler(tmp);
        cout<<"\n";
    }
    
    return 0;
}
复制代码

 

posted @   Miya555  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示
主题色彩