Cod sursa(job #1213765)

Utilizator DjokValeriu Motroi Djok Data 28 iulie 2014 22:34:30
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
#include<algorithm>
#include<string>
using namespace std;

typedef struct lnod {
      int info;
      lnod *next; 
}*nod;

int i,n,m,gmb,fnc,rs,l,aux;
nod lda[4100],p,r,q;
string s;
bool u;

void add(int x,nod &y) {
    nod p=new lnod;
    p->info=x;
    p->next=y;
    y=p; 
}

int main()
{
  ifstream cin("triplete.in");
  ofstream cout("triplete.out");  
  
  cin>>n>>m; getline(cin,s);
  while(m--)
  {
    getline(cin,s); l=s.length(); gmb=0; fnc=0; aux=0;
    while(s[aux]<='9' && s[aux]>='0')
    gmb=gmb*10+s[aux]-'0',++aux;
    ++aux;
    while(s[aux]<='9' && s[aux]>='0' && aux<l)
    fnc=fnc*10+s[aux]-'0',++aux;
    
    if(gmb>fnc) add(gmb,lda[fnc]);
    else add(fnc,lda[gmb]);        
  }
  
  for(i=1;i<=n;++i)
    for(p=lda[i];p;p=p->next)
      for(r=p->next;r;r=r->next)
      {
        gmb=p->info; fnc=r->info;
        if(gmb>fnc) swap(gmb,fnc);
       
        for(q=lda[gmb],u=0;q && !u;q=q->next)
        if(q->info==fnc) ++rs,u=1;                         
      }
   
  cout<<rs<<'\n'; 
    
 return 0;   
}