Cod sursa(job #1748044)

Utilizator LucianTLucian Trepteanu LucianT Data 26 august 2016 00:07:22
Problema Pitici Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.6 kb
//not quite
#include <bits/stdc++.h>
#define maxN (1<<10)
using namespace std;
int n,m,k,i,j,x,y,z;
int dist[maxN],ind[maxN];
vector<pair<int,int> >v[maxN],tr[maxN];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >heap;
vector<int>sorted,dp[maxN];
bool seen[maxN];
void dfs(int nod)
{
    seen[nod]=true;
    for(vector<pair<int,int> >::iterator it=v[nod].begin();it!=v[nod].end();it++)
        if(!seen[it->first])
            dfs(it->first);
    sorted.push_back(nod);
}
int main()
{
    freopen("pitici.in","r",stdin);
    freopen("pitici.out","w",stdout);
    scanf("%d %d %d",&n,&m,&k);
    for(i=1;i<=m;i++)
        scanf("%d %d %d",&x,&y,&z),
        v[x].push_back(make_pair(y,z)),
        tr[y].push_back(make_pair(x,z));
    dfs(1);
    //dp[1].push_back(0);
    /*for(i=sorted.size()-1;i>0;i--)
    {
        int node=sorted[i];
        while(!heap.empty())
            heap.pop();
        for(vector<pair<int,int> >::iterator it=tr[node].begin();it!=tr[node].end();it++)
        {
            int newn=it->first;
            dist[newn]=it->second;
            ind[newn]=1;
            heap.push(make_pair(dp[newn][0]+dist[newn],newn));
        }
        for(j=1;j<=k && !heap.empty();j++)
        {
            pair<int,int> el=heap.top();
            heap.pop();
            dp[node].push_back(el.first);
            if(ind[el.second]<(int)dp[el.second].size())
                heap.push(make_pair(dp[el.second][ind[el.second]++]+dist[el.second],el.second));
        }
    }*/
    for(i=0;i<k;i++)
        printf("%d ",dp[n][i]);
    return 0;
}