Cod sursa(job #1316926)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 14 ianuarie 2015 12:24:59
Problema Sate Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <stdio.h>
#include <vector>
int adj[30001][201],cost[30001][201],p1[30001];
int n,m,x,y;
bool ver[30001];
bool as=0;
void dfs(int sat,int counter)
{
     ver[sat]=1;
     if(sat==y)
     {
               printf("%d\n",counter);
               as=1;
               return;
     }
     for(int i=0;i<p1[sat];i++)
     {
             if(ver[adj[sat][i]]==0)
             {
                                       dfs(adj[sat][i],counter+cost[sat][i]);
                                       if(as==1) return;
             }
     }
     ver[sat]=0;
}
int main()
{
    freopen ("sate.in","r",stdin);
    freopen ("sate.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&x,&y);
    int py,px,c;
    int temp;
    for(int i=1;i<=m;i++)
    {
            scanf("%d%d%d",&px,&py,&c);
            if(px>py)
            {
                     temp=px;
                     px=py;
                     py=temp;
            }
            adj[px][p1[px]]=py;
            cost[px][p1[px]]=c;
            p1[px]++;
            adj[py][p1[py]]=px;
            cost[py][p1[py]]=-c;
            p1[py]++;
    }
    
    dfs(x,0);
}