Submission #1235798

#TimeUsernameProblemLanguageResultExecution timeMemory
1235798vivkostovMeetings (JOI19_meetings)C++20
Compilation error
0 ms0 KiB
#pragma once
#include "meetings.h"
#include "grader.cpp"
#include <bits/stdc++.h>
using namespace std;
int n,mat[305][305],br,leaf[305],used[305],used2[305],lamp;
map<int,int>m[305];
void prec()
{
    for(int i=1;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            mat[i][j]=Query(0,i,j);
        }
    }
}
void fix()
{
    for(int i=1;i<n;i++)
    {
        if(leaf[i]==2)
        {
            Bridge(0,i);
        }
    }
    lamp=1;
}
void resh()
{
    int num_leaf=0;
    for(int i=1;i<n;i++)
    {
        if(leaf[i])continue;
        for(int j=i+1;j<n;j++)
        {
            if(leaf[j])continue;
            used[mat[i][j]]++;
        }
    }
    for(int i=1;i<n;i++)
    {
        if(leaf[i])continue;
        if(!used[i])
        {
            num_leaf++;
            leaf[i]=2;
        }
    }
    //cout<<num_leaf<<endl;
    if(num_leaf+1==br)
    {
        fix();
        return;
    }
    for(int i=1;i<n;i++)
    {
        if(leaf[i]==2)
        {
            for(int j=i+1;j<n;j++)
            {
                if(leaf[j]==2)
                {
                    used2[mat[i][j]]++;
                    m[mat[i][j]][i]=1;
                }
            }
        }
    }
    for(int i=1;i<n;i++)
    {
        if(leaf[i]==1)continue;
        if(used[i]==used2[i]-m[i].size()+1)
        {
            for(auto j=m[i].begin();j!=m[i].end();j++)
            {
                Bridge(min(i,j->first),max(i,j->first));
                leaf[j->first]=1;
                br--;
            }
            for(int j=1;j<n;j++)
            {
                if(leaf[j]==1||j==i)continue;
                if(mat[min(i,j)][max(i,j)]==i)
                {
                    //cout<<i<<" "<<j<<endl;
                    Bridge(min(i,j),max(i,j));
                    leaf[j]=1;
                    br--;
                }
            }
        }
    }
    for(int i=1;i<n;i++)
    {
        m[i].clear();
        if(leaf[i]==2)leaf[i]=0;
    }
    memset(used,0,sizeof(used));
    memset(used2,0,sizeof(used2));
}
void Solve(int N)
{
    n=N;
    br=n;
    prec();
    int b=0;
    //cout<<endl;
    while(!lamp)
    {
        resh();
        //b++;
        //cout<<br<<endl;
        //if(b==3)return;
    }
}

Compilation message (stderr)

meetings.cpp:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
/usr/bin/ld: /tmp/cc6jfB5y.o: in function `Query(int, int, int)':
grader.cpp:(.text+0x130): multiple definition of `Query(int, int, int)'; /tmp/ccIK1iqE.o:meetings.cpp:(.text+0x360): first defined here
/usr/bin/ld: /tmp/cc6jfB5y.o: in function `Bridge(int, int)':
grader.cpp:(.text+0x250): multiple definition of `Bridge(int, int)'; /tmp/ccIK1iqE.o:meetings.cpp:(.text+0x500): first defined here
/usr/bin/ld: /tmp/cc6jfB5y.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccIK1iqE.o:meetings.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status