TOPIC

Runtime Error

Wellington Levi asked 2 years ago

Não consigo achar meu erro, alguem pode me ajudar?

#include<stdio.h>
#include<string.h>
int main()
{
    //freopen("in.txt","r",stdin);
    long int n,m,q,x,y,a,b,p;
    while(scanf("%ld %ld %ld",&n,&m,&q)!=EOF)
    {
        long int matriz[n+1][n],dupla[m][2],i,j,k;
        for(i=0;i<n+1;i++)
            for(j=0;j<n;j++)
            matriz[i][j]=0;
        for(i=0;i<m;i++)
        {
            scanf("%ld %ld",&x,&y);
            if(x<y)
            {
                dupla[i][0]=x;
                dupla[i][1]=y;
            }
            else
            {
                dupla[i][0]=y;
                dupla[i][1]=x;
            }
        }
        for(i=0;i<m-1;i++)
             for(j=1;j<m;j++)
            {
                if(dupla[i][0]>dupla[j][0] || (dupla[i][0]==dupla[j][0] && dupla[i][1]>dupla[j][1]))
                {
                    p=dupla[j][0];
                    k=dupla[j][1];
                    dupla[j][0]=dupla[i][0];
                    dupla[j][1]=dupla[i][1];
                    dupla[i][0]=p;
                    dupla[i][1]=k;
                }

            }

        for(i=0;i<m;i++)
        {
            a=-1;
            b=-1;
            x=dupla[i][0];
            y=dupla[i][1];

            for(j=0;j<n && matriz[j][0]!=0;j++)
            {
                for(k=0;k<n&& matriz[j][k]!=0;k++)
                {
                    if(matriz[j][k]==x)
                a=j;
                    if(matriz[j][k]==y)
                b=j;
                }

                 if(a!=-1)
                    for(k=0;a!=-2;k++)
                        if(matriz[a][k]==0)
                        {
                            matriz[a][k]=y;
                            a=-2;
                        }
                if(b!=-1)
                    for(k=0;b!=-2;k++)
                        if(matriz[b][k]==0)
                    {
                        matriz[b][k]=x;
                        b=-2;
                    }
            }
            if(a==-1&&b==-1)
            {
                matriz[j][0]=x;
                matriz[j][1]=y;
            }

        }
           for(i=0;i<q;i++)
        {
            x=0;
            scanf("%ld %ld",&a,&b);
            for(j=0;j<n&&matriz[j][0]!=0 && x!=2;j++)
                {
                for(k=0;k<n&&matriz[j][k]!=0;k++)
                {
                    if(k==0)
                        x=0;
                 if(matriz[j][k]==a || matriz[j][k]==b)
                x++;
                }
                }
            if(x==2)
                puts("S");
            else
                puts("N");
        }
        printf("\n");
    }
    return 0;
    }

Remember not post solutions. Your post may be reviewed by our moderators.

  • Mohammed Julfikar Ali Mahbub replied 2 years ago

    Test your code with the following:

    Input: 10 5 3 1 2 3 4 5 6 4 2 1 6 3 6 2 5 6 4

    Output: -> S -> S -> S

  • Calixto replied 2 years ago

    Amigo acredito que o problema seja excesso de uso de memoria, lembre-se que n <= 10000 e n+1*n vai ocupar muita memória Infelizmente eu também estou com esse problema, devemos pensar em outra forma de salvar os dados. nesse trecho da alocação de memória: long int matriz[n+1][n],dupla[m][2],i,j,k;