9Google AdSense

ACM Problem Solution 10696 - f91

problem

#include<stdio.h>

long int result(long int n)
{
  if(n<=100)
    return(result(result(n+11)));
  else if(n>=101)
    return(n-10);

}
int main()
{
long int n,x;
while(scanf("%ld",&n)==1)
{
    if(n==0)
        break;
    x=result(n);
    printf("f91(%ld) = %ld\n",n,x);

}
return 0;

}

ACM Problem Solution : 10035 Primary Arithmetic


problem
#include <stdio.h>
#include<string.h>>
int main() {
char a[100],b[100];
int lena,lenb,x,y,num1,num2,cry,sum,i,j;
while(scanf("%s%s",&a,&b)==2)
{
    if(a[0]=='0'&&b[0]=='0')
        break;
    lena=strlen(a);
    lenb=strlen(b);
    x=0;
    cry=0;
    for(i=lena-1,j=lenb-1;i>=0||j>=0;j--,i--)
    {
     if(i>=0)
     num1=a[i]-48;
    else num1=0;
    if(j>=0)
     num2=b[j]-48;
     else num2=0;
     sum=num1+num2+x;
        if(sum>9)
        {
        cry++;
        x=sum/10;

        }
        else x=0;
    }
    if(cry==0)
        printf("No carry operation.\n");
    else if(cry==1)
    printf("%d carry operation.\n",cry);

    else
    printf("%d carry operations.\n",cry);

}

return 0;

}

Find topological sort of directed graph


#include<stdio.h>

int vertex,indegree1[50],strtop[50];
int graph[50][50];
void topo(int vertex);

int main()
{


    int i,j,edge,p,x,y,kk,ff,rr;
    printf("Enter the Number of Vertex : ");
    scanf("%d",&vertex);
    printf("\n");
    printf("Enter the Number of Edge : ");
    scanf("%d",&edge);
    printf("\n");
    for(ff=1;ff<=vertex;ff++)
    for(rr=1;rr<=vertex;rr++)
        graph[ff][rr]=0;
    for(i=1;i<=edge;i++)
    {
    scanf("%d%d",&x,&y);
    graph[x][y]=1;

    }
    for(kk=1;kk<=vertex;kk++)
    {    indegree1[kk]=0;
    strtop[kk]=0;
    }
    printf("\n");
    for(i=1;i<=vertex;i++)
      for(j=1;j<=vertex;j++)
          if(graph[j][i]==1)
            indegree1[i]++;
    topo(vertex);
    return 0;
}
void topo(int vertex)
{
    int l,p,xx,node,top=0,d=0,flag=0,pp;
    for(l=1;l<=vertex;l++)
    {
        if(indegree1[l]==0)
        {
              strtop[++top]=l;
              flag=1;
        }

    }
    if(flag==0)
    {    printf("Topological sort is not possible\n");

    }
    else
    {

        while(d!=vertex)
        {
        node=strtop[++d];
        for(xx=1;xx<=vertex;xx++)
            if(graph[node][xx]==1)
            {
                indegree1[xx]=indegree1[xx]-1;
                if(indegree1[xx]==0)
                    strtop[++top]=xx;
            }


        }
        printf("\nAfter topological sort : \n");
        for(pp=1;pp<=vertex;pp++)
            printf("%d ",strtop[pp]);
        printf("\n");

    }

}

ACM Problem Solution : Ordering Tasks 10305

#include<stdio.h>

int vertex,indegree1[110],strtop[110];
int graph[110][110];
void topo(int vertex);

int main()
{


    int i,j,edge,p,x,y,kk,ff,rr,pp;
    while(scanf("%d%d",&vertex,&edge)==2)
    {
    if((vertex==0)&&(edge==0))
        break;
    for(ff=1;ff<=vertex;ff++)
        for(rr=1;rr<=vertex;rr++)
            graph[ff][rr]=0;
    for(i=1;i<=edge;i++)
    {
        scanf("%d%d",&x,&y);
        graph[x][y]=1;
    }
    for(kk=1;kk<=vertex;kk++)
    {    indegree1[kk]=0;
        strtop[kk]=0;
    }
    for(i=1;i<=vertex;i++)
        for(j=1;j<=vertex;j++)
            if(graph[j][i]==1)
                indegree1[i]++;
    topo(vertex);
    for(pp=1;pp<=vertex;pp++)
        printf("%d ",strtop[pp]);
    printf("\n");
    }
    return 0;
}
void topo(int vertex)
{
    int l,p,xx,node,top=0,d=0;
    for(l=1;l<=vertex;l++)
        if(indegree1[l]==0)
              strtop[++top]=l;
    while(d!=vertex)
    {
        node=strtop[++d];
        for(xx=1;xx<=vertex;xx++)
            if(graph[node][xx]==1)
            {
                indegree1[xx]=indegree1[xx]-1;
                if(indegree1[xx]==0)
                    strtop[++top]=xx;
            }


    }


}

Find Indegree and Outdegree of all vertex of a directed graph.

#include<stdio.h>

int main()
{
    int graph[50][50];
    int i,j,edge,vertex,p,x,y,indegree1[90]={0},outdegree1[90]={0},a,q,w;
    printf("Enter the Number of Vertex : ");
    scanf("%d",&vertex);
    printf("\n");
    printf("Enter the Number of Edge : ");
    scanf("%d",&edge);
    printf("\n");
    for(w=1;w<=vertex;w++)
        for(q=1;q<=vertex;q++)
            graph[w][q]=0;
    for(i=1;i<=edge;i++)
    {
    scanf("%d%d",&x,&y);
    graph[x][y]=1;
    }
    printf("\n");
    for(i=1;i<=vertex;i++)
    {
         for(j=1;j<=vertex;j++)
         {
              if(graph[i][j]==1)
              {
                    outdegree1[i]++;
                    indegree1[j]++;
              }
         }

    }
    printf("Indegree\n");
    for(p=1;p<=vertex;p++)
    {
        printf("%d : %d\n",p,indegree1[p]);
    }
    printf("Outdegree\n");
    for(a=1;a<=vertex;a++)
    {
        printf("%d : %d\n",a,outdegree1[a]);
    }

    return 0;
}


Input/Output

 

Adjacency List (Represent Graph on computer)

#include<stdio.h>

int main()
{
    int graph[50][50];
    int i,j,edge,vertex,p,x,y,w,q;
    printf("Enter the Number of Vertex : ");
    scanf("%d",&vertex);
    printf("\n");
    printf("Enter the Number of Edge : ");
    scanf("%d",&edge);
    printf("\n");
 for(w=1;w<=vertex;w++)
        for(q=1;q<=vertex;q++)
            graph[w][q]=0;
    for(i=1;i<=edge;i++)
    {
        scanf("%d%d",&x,&y);
        graph[x][y]=1;
    }
    printf("\n");
    for(i=1;i<=vertex;i++)
    {
         printf("[%d] ",i);
         for(j=1;j<=vertex;j++)
         {
              if(graph[i][j]==1)
                printf("=> %d ",j);
         }
         printf("\n");
    }
    return 0;
}

Adjacency Matrix (Represent Graph on computer)

#include<stdio.h>

int main()
{
    int graph[50][50];
    int i,j,edge,vertex,p,x,y,q,w;
    printf("Enter the Number of Vertex : ");
    scanf("%d",&vertex);
    printf("\n");
 for(w=1;w<=vertex;w++)
        for(q=1;q<=vertex;q++)
            graph[w][q]=0;
    printf("Enter the Number of Edge : ");
    scanf("%d",&edge);
    printf("\n");

    for(i=1;i<=edge;i++)
    {
        scanf("%d%d",&x,&y);
        graph[x][y]=1;
    }

    printf("\n");
    printf("  ");
    for(p=1;p<=vertex;p++)
           printf("%d\t",p);
    printf("\n");
    for(i=1;i<=vertex;i++)
    {
         printf("%d ",i);
         for(j=1;j<=vertex;j++)
         {
             printf("%d\t",graph[i][j]);
         }
         printf("\n");
    }
    return 0;
}

Input
 Output

ACM Problem Solution : Slogan Learning of Princess 12592

Problem
-------------------------------------------------------
#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std;
int main()
{
    int n,i,m,j,k,number;
    char ch;
    string ary[150],slogan;
    cin>>number;
    getchar();
    n=number*2;
    for(i=1;i<=n;i++)
        getline(cin,ary[i]);
    cin>>m;
    getchar();
    for(j=1;j<=m;j++)
    {
        getline(cin,slogan);
        for(k=1;k<=n;k++)
        {
            if(ary[k]==slogan)
            {
                cout<<ary[k+1]<<endl;
                break;
            }
        }
    }
    return 0;
}