125862024-12-24 16:54:25ercseferencKerékpártúra (50 pont)cpp17Wrong answer 0/501ms508 KiB
#include <iostream>
#include <fstream>
using namespace std;
struct pont
    {int kim[10000]; int bem[10000]; int cardk=0; int cardb=0; bool van=0; bool jo=0;};
int main()
{
    int n,m,k,x,y;
    ifstream f("szamok.txt");
    f>>n>>m>>k;
    pont a[n+1]; int l1[n+1],l2[n+1],l3[n+1],cardl1=0,cardl2=1,cardl3=0; bool nincs=0;
    for(int i=0; i<m; i++){
        f>>x>>y; a[x].cardk++;
        a[y].cardb++;
        a[x].kim[a[x].cardk]=y;
        a[y].bem[a[y].cardb]=x;}
    a[k].van=1;
    for(int i=1; i<=a[k].cardb; i++){l1[i]=a[k].bem[i]; a[l1[i]].van=1; cardl1++;
                                    l3[i]=a[k].bem[i]; cardl3++;}
    while(nincs==0){
        for(int i=1; i<=cardl1; i++){
            for(int j=1; j<=a[l1[i]].cardb; j++){
                if(a[a[l1[i]].bem[j]].van==0)
                    {l2[cardl2]=a[l1[i]].bem[j]; a[a[l1[i]].bem[j]].van=1;
                    cardl2++;}}}
        if(cardl2==1) nincs=1;
        for(int i=1; i<=cardl2; i++){
                l3[cardl3+i]=l2[i]; l1[i]=l2[i]; l2[i]=0;}
        cardl3=cardl3+cardl2-1; cardl2=1;}
    for(int i=1; i<=cardl3; i++){a[l3[i]].jo=1; l3[i]=0;}
    for(int i=1; i<=n; i++){a[i].van=0;} nincs=0;
    a[k].van=1; cardl1=1; cardl2=1; cardl3=1;
    for(int i=1; i<=a[k].cardk; i++){
            if(a[a[k].kim[i]].jo==1){
                l1[cardl1]=a[k].kim[i]; a[l1[cardl1]].van=1; cardl1++; l3[cardl3]=a[k].kim[i]; cardl3++;}}
    cardl1--; cardl3--;
    while(nincs==0){
        for(int i=1; i<=cardl1; i++){
            for(int j=1; j<=a[l1[i]].cardk; j++){
                if(a[a[l1[i]].kim[j]].van==0 &&a[a[l1[i]].kim[j]].jo==1)
                    {l2[cardl2]=a[l1[i]].kim[j]; a[a[l1[i]].kim[j]].van=1;
                    cardl2++;}}}
        if(cardl2==1) nincs=1;
        for(int i=1; i<=cardl2; i++){
                l3[cardl3+i]=l2[i]; l1[i]=l2[i]; l2[i]=0;}
        cardl3=cardl3+cardl2-1; cardl2=1;}
    int l4[n+1]; int cardl4=0;
    for(int i=1; i<=cardl3; i++){cardl4++; l4[cardl4]=l3[i];}
    for(int i=1; i<=cardl3; i++){
        for(int j=1; j<=a[l3[i]].cardk; j++){
            if(a[a[l3[i]].kim[j]].van==0){cardl4++; l4[cardl4]=a[l3[i]].kim[j]; a[a[l3[i]].kim[j]].van=1;}}}
    cout<<cardl4;
    if(cardl4!=0){cout<<endl;
    for(int i=1; i<=cardl4; i++){cout<<l4[i]<<" ";}}
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base0/50
1Wrong answer0/01ms320 KiB
2Wrong answer0/01ms320 KiB
3Wrong answer0/21ms320 KiB
4Wrong answer0/21ms320 KiB
5Wrong answer0/21ms320 KiB
6Wrong answer0/21ms320 KiB
7Wrong answer0/21ms320 KiB
8Wrong answer0/21ms320 KiB
9Wrong answer0/21ms320 KiB
10Wrong answer0/21ms320 KiB
11Wrong answer0/21ms320 KiB
12Wrong answer0/21ms320 KiB
13Wrong answer0/21ms320 KiB
14Wrong answer0/21ms360 KiB
15Wrong answer0/31ms320 KiB
16Wrong answer0/41ms320 KiB
17Wrong answer0/41ms508 KiB
18Wrong answer0/31ms320 KiB
19Wrong answer0/31ms320 KiB
20Wrong answer0/31ms320 KiB
21Wrong answer0/31ms320 KiB
22Wrong answer0/31ms320 KiB