예제 #1
0
파일: main.cpp 프로젝트: alexkats/Code
int main ()
{
    srand (time (0));

    freopen (NAME".in", "r", stdin);
    freopen (NAME".out", "w", stdout);

    scanf ("%d %d", &n, &m);
    g.resize (n + 1);
    used.resize (n + 1, 0);

    for (int i = 0; i < m; i++)
    {
        int x, y;
        scanf ("%d %d", &x, &y);
        g [x].pb (y);
        g [y].pb (x);
    }

    int ans = 0;

    for (int i = 1; i <= n; i++)
        if (!used [i])
        {
            ans++;
            dfs (i);
        }

    printf ("%d\n", ans);

    return 0;
}
예제 #2
0
파일: main.cpp 프로젝트: alexkats/Code
int main ()
{
    srand (time (0));

    freopen (NAME".in", "r", stdin);
    freopen (NAME".out", "w", stdout);

    scanf ("%d", &n);

    primes.resize (n + 1, 1);
    primes [0] = primes [1] = 0;

    for (int i = 2; i * i <= n; i++)
        if (primes [i] && (i * 1ll * i <= n))
            for (int j = i * i; j <= n; j += i)
                primes [j] = 0;

    int ans = 0;
    int res = 2;

    for (int i = 1; i <= n; i++)
    {
        ans += primes [i];
        res = primes [i] ? i : res;
    }

    cout << ans << endl;
    cout << res << endl;

    return 0;
}
예제 #3
0
파일: A.cpp 프로젝트: alexkats/Code
int main ()
{
    srand (time (0));

    freopen ("input.txt", "r", stdin);
    freopen ("output.txt", "w", stdout);

    scanf ("%d %d", &n, &m);
    g.resize (n + 1);
    used.resize (n + 1, 0);

    for (int i = 0; i < m; i++)
    {
        int x, y;
        scanf ("%d %d", &x, &y);
        g [x].pb (y);
        num [x][y] = i + 1;
    }

    int st;
    scanf ("%d", &st);
    vi ans;
    found = 0;
    dfs (st, ans);

    if ((int) ans.size () == 0)
    {
        puts ("-1");
        return 0;
    }

    reverse (ans.begin (), ans.end ());
    ans.pop_back ();
    printf ("%d\n", (int) ans.size ());

    for (int i = 0; i < (int) ans.size (); i++)
        printf ("%d%c", ans [i], " \n" [i == (int) ans.size () - 1]);

    return 0;
}