Cod sursa(job #521852)

Utilizator mihaimoldovanMihai Moldovan mihaimoldovan Data 13 ianuarie 2011 15:49:44
Problema Potrivirea sirurilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#include<fstream>
#include<vector>
#include<set>
#define INFI 1<<30
using namespace std;
int n,m,d[205],culoare[205];
vector<pair<int,int>>G[205];//first = culoare, second = 
set<pair<int,int>>T;//first = dist second = nod
void dijsktra()
{
    int i,k,val,culoare;
    for(i=1;i<=n;++i)
        d[i]=INFI;
    d[1]=0;
    culoare[1]=-1;
    T.insert(make_pair(0,1));
    while(T.size())
        {
            val=(*T.begin()).first;
            k=(*T.begin()).second;
            T.erase(*T.begin());
            for(i=0;i<=G[k].size();++i)
            {
               if(G[k][i].first!=culoare[]&&d[G[k][i].second]>val+1)   
                 {
                     d[G[k][i].second]=val+1;
                     culoare[i]=G[k][i].first;
                     T.insert(make_pair(d[G[k][i].second],G[x][i].second));
                 }    
            }    
        }    
}    

int main()
{
    int a,b,c;
    ifstream fin("f.in");
    fin>>n>>m;
    for(int i=1;i<=m;++i)
        {
             fin>>a>>b>>c;   
             G[a].push_back(make_pair(c,b));
        }    
    fin.close();
    
    dijkstra();
    
    FILE *fout = fopen("f.out","w");
    if(d[n]!=INFI)
        fprintf(fout,"%d",d[n]);
    else
        fprintf(fout,"-1");
    fclose(fout);
    return 0;   
}