제출 #1283716

#제출 시각아이디문제언어결과실행 시간메모리
1283716tcmducSplit the Attractions (IOI19_split)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#define fi first
#define se second
using namespace std;
const long long oo=1e18;
const int mod=1e9+7;
void home()
{
    freopen("main.inp","r",stdin);
    freopen("main.out","w",stdout);
}
bool bit(int mask,int i){return (mask>>i)&1;}
int on(int mask,int i){return mask|(1<<i);}
int n,m;
pair<int,int>mau[5];
vector<int>a[100005];
int sz[100005];
int pick=0;
bool vis[100005];
void DFS(int u)
{
    sz[u]=1;vis[u]=true;
    for(int v:a[u])
    {
        if(!vis[v])
        {
            DFS(v);
            sz[u]+=sz[v];
        }
    }
    if(!pick&&sz[u]>=mau[1].fi&&n-sz[u]>=mau[2].fi)pick=u;
}
int cl[100005];
queue<int>q;
int deg[100005];
void TraceA(int u,bool ok)
{
    if(ok)cl[u]=1,mau[1].fi--;
    vis[u]=true;
    for(int v:a[u])
    {
        if(!vis[v])
        {
            deg[u]++;
            TraceA(v,ok|(v==pick));
        }
    }
    if(deg[u]==0&&cl[u]==1)q.push(u);
}
void TraceB(int u)
{
    if(!cl[u]&&mau[2].fi>0)cl[u]=2,mau[2].fi--;
    vis[u]=true;
    for(int v:a[u])
    {
        if(!vis[v]&&v!=pick)
            TraceB(v);
    }
}
void Tcmduc_VOI26()
{
    cin>>n>>m;
    cin>>mau[1].fi>>mau[2].fi>>mau[3].fi;mau[1].se=1;mau[2].se=2;mau[3].se=3;
    sort(mau+1,mau+3+1);
    for(int i=1;i<=m;i++)
    {
        int u,v;cin>>u>>v;u++,v++;
        a[u].push_back(v);
        a[v].push_back(u);
    }
    DFS(1);
    memset(vis,0,sizeof(vis));
    if(!pick)
    {
        for(int i=1;i<=n;i++)
            cout<<0<<' ';
        return;
    }
    TraceA(1,0|(pick==1));
    memset(vis,0,sizeof(vis));
    TraceB(1);
    while(!q.empty())
    {
        int u=q.front();q.pop();
        if(mau[1].fi==0)break;
        cl[u]=0;mau[1].fi--;
        for(int v:a[u])
        {
            deg[v]--;
            if(deg[v]==0)q.push(v);
        }
    }
    for(int i=1;i<=n;i++)
    {
        if(cl[i]==1)cout<<mau[1].se<<' ';
        else if(cl[i]==2)cout<<mau[2].se<<' ';
        else cout<<mau[3].se<<' ';
    }
}
int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);//home();
    Tcmduc_VOI26();
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

split.cpp: In function 'void home()':
split.cpp:9:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |     freopen("main.inp","r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
split.cpp:10:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     freopen("main.out","w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccK9SPtY.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccdxvBdN.o:split.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccK9SPtY.o: in function `main':
grader.cpp:(.text.startup+0x270): undefined reference to `find_split(int, int, int, int, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status