Facebook
From Gruff Mockingjay, 6 Years ago, written in C++.
This paste is a reply to Untitled from Chocolate Lechwe - go back
Embed
Viewing differences between Untitled and Re: Untitled
#include 
#include 
#include 
#include 
#include 
#define MAXN 500001

using namespace std;

vector  galezie[MAXN];
bitset  odw;
bitset  strajk;

/*
void ilosc_poddrzew(int a)
{
    int wynik = 0;
    bool x = 0;

    for(int i = 1; i <= a; i++)
    {
        if(strajk[i] && galezie[i].size() > 1)
        {
            for(int j = 0; j < galezie[i].size(); j++)
            {
                //printf("%d ",galezie[i][j]);
                if(strajk[galezie[i][j]] == 0) wynik++;
                /*if(x == 0)
                {
                    wynik--;
                    x++;
                }//
            }
        }
        if(galezie[i].size() == 1 && wynik == 0 && strajk[i]) wynik++;
    }

    printf("%d\n",wynik);
}
*/

int main()
{
    int n, x, y, m, pomoc_strajki;
    int wynik = 1;

    scanf("%d",&n);

    for(int i = 1; i < n; i++)
    {
        scanf("%d%d",&x,&y);

        galezie[x].push_back(y);
        galezie[y].push_back(x);
    }

    scanf("%d",&m);

    for(int i = 0; i < m; i++)
    {
        scanf("%d",&pomoc_strajki);
        if(pomoc_strajki > 0) strajk[pomoc_strajki].flip();
            else strajk[pomoc_strajki * -1].flip();

        if(pomoc_strajki > 0)
        {
            wynik--;
            for(int j = 0; j < galezie[pomoc_strajki].size(); j++)
                if(strajk[galezie[pomoc_strajki][j]] == 0) wynik++;
        }
        else
        {
            wynik++;
            for(int j = 0; j < galezie[-1 *pomoc_strajki].size(); j++)
                if(strajk[galezie[-1 * pomoc_strajki][j]] == 0) wynik--;
        }

        //ilosc_poddrzew(n);

        printf("%d",wynik);
    }
}