Submission #440278

# Submission time Handle Problem Language Result Execution time Memory
440278 2021-07-01T22:37:19 Z MohamedAliSaidane Connecting Supertrees (IOI20_supertrees) C++14
21 / 100
251 ms 31920 KB
#include "supertrees.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;
#define pb push_back
#define popb pop_back
#define ff first
#define ss second

vi par;
vi rnk;
int findset(int i)
{
    if(par[i] == i)
        return i;
    return findset(par[i]) ;
}
void unite(int i, int j)
{
    if(findset(i) == findset(j))
        return;
    int x = findset(i);
    int y = findset(j);
    if(rnk[x] < rnk[y])
        swap(x,y);
    par[y] = x;
    if(rnk[x] == rnk[y])
        rnk[x] ++;
    return ;
}
int construct(vector<vi> p)
 {
	int n = p.size();
	vector<vi> b;
	int maxt = 0;
	map<int,vi> m;
	for (int i = 0; i < n; i++)
    {
		vi row;
		for(int j = 0; j <n; j ++)
        {
            par.pb(j);
            rnk.pb(0);
            row.pb(0);
        }
		b.pb(row);
	}
	for(int i = 0; i <n; i ++)
	{
	    for(int j = 0; j < n; j ++)
        {
            if(i == j)
            {
                continue;
            }
            if(p[i][j] > 0)
            {
                maxt = max(p[i][j],maxt);
                unite(i,j);
            }
        }
	}
	for(int i = 0; i <n; i ++)
    {
        for(int j = 0; j < n; j ++)
        {
            if(i == j)
                continue;
            if((p[i][j] == 0 && findset(i) == findset(j)) || p[i][j] == 3)
                return 0;
        }
    }
    if(maxt == 1)
    {
        for(int i = 0; i <n; i ++)
        {
            if(i != par[i])
            {
                b[i][par[i]] = 1;
                b[par[i]][i] = 1;
            }
        }
    }
    else if (maxt == 2)
    {
        for(int i = 0; i <n ; i++)
        {
            m[findset(i)].pb(i);
        }
        for(auto e: m )
        {
            for(int j = 0; j < e.ss.size() - 1; j ++)
            {
                b[e.ss[j]][e.ss[j+1]] = 1;
                b[e.ss[j+1]][e.ss[j]] = 1;
            }
            if(e.ss.size() != 1)
            {
            b[e.ss[0]][e.ss[e.ss.size()-1]] = 1;
            b[e.ss.size()-1][e.ss[0]] = 1;
            }
        }
    }
    build(b);
	return 1;
}
/*
6
1 1 1 0 0 0
1 1 1 0 0 0
1 1 1 0 0 0
0 0 0 1 1 1
0 0 0 1 1 1
0 0 0 1 1 1
*/

Compilation message

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:94:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   94 |             for(int j = 0; j < e.ss.size() - 1; j ++)
      |                            ~~^~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 10 ms 1412 KB Output is correct
7 Correct 234 ms 30040 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 10 ms 1412 KB Output is correct
7 Correct 234 ms 30040 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 10 ms 1420 KB Output is correct
13 Correct 232 ms 29892 KB Output is correct
14 Correct 1 ms 204 KB Output is correct
15 Correct 0 ms 204 KB Output is correct
16 Correct 5 ms 1172 KB Output is correct
17 Correct 127 ms 19948 KB Output is correct
18 Correct 1 ms 204 KB Output is correct
19 Correct 1 ms 204 KB Output is correct
20 Correct 60 ms 7680 KB Output is correct
21 Correct 243 ms 29856 KB Output is correct
22 Correct 245 ms 29896 KB Output is correct
23 Correct 249 ms 29856 KB Output is correct
24 Correct 240 ms 29788 KB Output is correct
25 Correct 111 ms 20008 KB Output is correct
26 Correct 106 ms 19936 KB Output is correct
27 Correct 251 ms 29796 KB Output is correct
28 Correct 243 ms 29924 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Incorrect 1 ms 204 KB Answer gives possible 1 while actual possible 0
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 60 ms 8164 KB Output is correct
5 Correct 243 ms 31920 KB Output is correct
6 Correct 244 ms 31804 KB Output is correct
7 Correct 248 ms 31764 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Incorrect 59 ms 8216 KB b is not symmetric: b[0][26] (0) != b[26][0] (1)
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 10 ms 1412 KB Output is correct
7 Correct 234 ms 30040 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 10 ms 1420 KB Output is correct
13 Correct 232 ms 29892 KB Output is correct
14 Correct 1 ms 204 KB Output is correct
15 Correct 0 ms 204 KB Output is correct
16 Correct 5 ms 1172 KB Output is correct
17 Correct 127 ms 19948 KB Output is correct
18 Correct 1 ms 204 KB Output is correct
19 Correct 1 ms 204 KB Output is correct
20 Correct 60 ms 7680 KB Output is correct
21 Correct 243 ms 29856 KB Output is correct
22 Correct 245 ms 29896 KB Output is correct
23 Correct 249 ms 29856 KB Output is correct
24 Correct 240 ms 29788 KB Output is correct
25 Correct 111 ms 20008 KB Output is correct
26 Correct 106 ms 19936 KB Output is correct
27 Correct 251 ms 29796 KB Output is correct
28 Correct 243 ms 29924 KB Output is correct
29 Correct 1 ms 204 KB Output is correct
30 Correct 0 ms 204 KB Output is correct
31 Correct 0 ms 204 KB Output is correct
32 Incorrect 1 ms 204 KB Answer gives possible 1 while actual possible 0
33 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 10 ms 1412 KB Output is correct
7 Correct 234 ms 30040 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 10 ms 1420 KB Output is correct
13 Correct 232 ms 29892 KB Output is correct
14 Correct 1 ms 204 KB Output is correct
15 Correct 0 ms 204 KB Output is correct
16 Correct 5 ms 1172 KB Output is correct
17 Correct 127 ms 19948 KB Output is correct
18 Correct 1 ms 204 KB Output is correct
19 Correct 1 ms 204 KB Output is correct
20 Correct 60 ms 7680 KB Output is correct
21 Correct 243 ms 29856 KB Output is correct
22 Correct 245 ms 29896 KB Output is correct
23 Correct 249 ms 29856 KB Output is correct
24 Correct 240 ms 29788 KB Output is correct
25 Correct 111 ms 20008 KB Output is correct
26 Correct 106 ms 19936 KB Output is correct
27 Correct 251 ms 29796 KB Output is correct
28 Correct 243 ms 29924 KB Output is correct
29 Correct 1 ms 204 KB Output is correct
30 Correct 0 ms 204 KB Output is correct
31 Correct 0 ms 204 KB Output is correct
32 Incorrect 1 ms 204 KB Answer gives possible 1 while actual possible 0
33 Halted 0 ms 0 KB -