why fk TLE
查看原帖
why fk TLE
578004
02Ljh楼主2023/1/13 19:36

和题解基本一样 不理解一直TLE

#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define ll long long
#define MAXN 51
#define WA puts("CCF\n");
#define eps 1e-5
int n;
int c[51];
int mapp[51][51];
//bool v[MAXN];
vector<pair<int,int> > ka;
void init()
{
     //memset(rd,0,sizeof(rd));
     //memset(cd,0,sizeof(cd));
     memset(c,0,sizeof(c));
     memset(mapp,0,sizeof(mapp));
     //memset(v,0,sizeof(v));
     //rq.clear();
     //cq.clear();
     return ;
}
void dfs(int pos)
{
    for(int i=1;i<=50;i++)
    {
        if(mapp[pos][i])
        {
            ka.push_back(make_pair(pos,i));
            mapp[pos][i]--;
            mapp[i][pos]--;
            dfs(i);
            break;
        }
    }
    return ;
}
int main()
{
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int _;
    cin>>_;
    for(int l=1;l<=_;l++)
    {
        cout<<"Case #"<<l<<"\n";
        cin>>n;
        init();
        int st;
        for(int i=1;i<=n;i++)
        {
            int u,v;
            cin>>u>>v;
            mapp[u][v]++;
            mapp[v][u]++;
            c[u]++;
            c[v]++;
            st=u;
        }
        bool flag=true;
        for(int i=1;i<51;i++)
        {
            if((c[i])%2!=0)
            {
                flag=false;
                cout<<"some beads may be lost\n\n";
                break;
            }
            //cout<<cq[i]<<" "<<rq[i]<<"\n";
        }
        if(!flag) continue;
        dfs(st);
        for(auto i:ka)
        {
            cout<<i.first<<" "<<i.second<<"\n";
        }
        cout<<"\n";
    }
    return 0;
}

2023/1/13 19:36
加载中...