9Google AdSense

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;
}



ACM Problem Solution : How old are you? - 11219

View Code
View Problem
-------------------------------------------------------------------------------------

#include<cstdio>
#include<iostream>

using namespace std;

int main()
{
    int day,month,year,age,t,day1,month1,year1,i;
    char ch;
    scanf("%d",&t);
    i=0;
    while(t--)
    {
        i++;
        scanf("%d%c%d%c%d",&day,&ch,&month,&ch,&year);
        scanf("%d%c%d%c%d",&day1,&ch,&month1,&ch,&year1);
        age=year-year1;
        if((month1>month)||((month==month1)&&(day<day1)))
            age=age-1;
        if(age<0)
            cout<<"Case #"<<i<<":"<<" "<<"Invalid birth date"<<endl;
        else if(age>130)
            cout<<"Case #"<<i<<":"<<" "<<"Check birth date"<<endl;
        else
            cout<<"Case #"<<i<<":"<<" "<<age<<endl;
    }
    return 0;
} 


ACM Problem Solution : Generating Fast - 10098

View Problem
View Code
-------------------------------------------------------------------------------------------------
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

int main()
{
    int t,len;
    char ch;
    char str[10000];
    scanf("%d%c",&t,&ch);
    while(t--)
    {
        gets(str);
        len=strlen(str);
        sort(str,str+len);
        do
        {
            cout<<str<<endl;
        }while(next_permutation(str,str+len));
        cout<<endl;
    }
    return 0;
}

ACM Problem Solution : Pig-Latin - 492

#include<stdio.h>
#include<ctype.h>
int isvowel(char ch)
{
   int flag =0;
   if(ch=='a'|| ch=='A'||ch=='e'|| ch=='E'||ch=='i'|| 
         ch=='I'||ch=='u'|| ch=='U'||ch=='o'|| ch=='O')
       flag = 1;
   return flag;
} 
int main()
{
    char ch,save;
    int n;
    while(1)
    {
        n=scanf("%c",&ch);
        if(n!=1)
            break;
        if(isvowel(ch))
        {
            printf("%c",ch);
            while(1)
        {
                scanf("%c",&ch);
                if(!isalpha(ch))
                    break;
                printf("%c",ch);
            }    
            printf("ay%c",ch);
        }
        else if(isalpha(ch))
        {
              save=ch;
              while(1)
              {
                scanf("%c",&ch);
                if(!isalpha(ch))
                    break;
                printf("%c",ch);
              }
              printf("%cay%c",save,ch);
        }
        else
          printf("%c",ch);
    }
    return 0;
} 

ACM Problem Solution : ID Codes - 146


View Code
view Problem
----------------------------------------------------------------------------
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
    char str[200];
    int len;
    while(gets(str)!=NULL)
    {
        if(str[0]=='#')
                 break;
        len=strlen(str);
       if(next_permutation(str,str+len)==1)
              printf("%s\n",str);
       else
             printf("No Successor\n");
   }
  return 0;
}

12554 - A Special "Happy Birthday" Song!!!

View Problem
View Code
---------------------------------------------------------------------
#include<stdio.h>
int main()
{
   int t,tt,k,p,ll,h,hh,se,st;
   char happy[20][100]={"Happy","birthday","to","you","Happy","birthday","to",
       "you","Happy","birthday","to","Rujia","Happy","birthday","to","you"};
   char inp[200][200],ch;
   scanf("%d%c",&t,&ch);
   for(k=0;k<t;k++)
          gets(inp[k]);
   if(t<16)
   {      for(p=0,ll=0;p<16;p++,ll++)
      {
        if(ll==t)
           ll=0;
         printf("%s: %s\n",inp[ll],happy[p]);
      }   }
   else
   {
      for(h=0,hh=0;h<t;h++,hh++)
      {       if(hh>15)
        hh=0;
        printf("%s: %s\n",inp[h],happy[hh]);
      }
      if(hh!=0)
      {
         for(st=hh,se=0;st<16;st++,se++)
         printf("%s: %s\n",inp[se],happy[st]);
      }
   }
   return 0;
}