Pagini recente » Cod sursa (job #16445) | Cod sursa (job #589846) | Cod sursa (job #2749024) | Cod sursa (job #484) | Cod sursa (job #2298653)
//Deşteaptă-te, române, din somnul cel de moarte,
//În care te-adânciră barbarii de tirani!
//Acum ori niciodată croieşte-ţi altă soartă,
//La care să se-nchine şi cruzii tăi duşmani!
//
//Acum ori niciodată să dăm dovezi în lume
//Că-n aste mâni mai curge un sânge de roman,
//Şi că-n a noastre piepturi păstrăm cu fală-un nume
//https://Versuri.ro/w/v0l2
//Triumfător în lupte, un nume de Traian!
//
//Înalţă-ţi lata frunte şi caută-n giur de tine,
//Cum stau ca brazi în munte voinici sute de mii;
//Un glas ei mai aşteaptă şi sar ca lupi în stâne,
//Bătrâni, bărbaţi, juni, tineri, din munţi şi din câmpii!
#include <bits/stdc++.h>
#define a1 first
#define a2 second
using namespace std;
ifstream f ("pitici.in");
ofstream g ("pitici.out");
const int nmax=1133;
int n,m,k,a,b,c,x,ord[1133],nr[1133],val[1133];
bool viz[1133];
vector <int> sol[1133],v[1133];
vector < pair <int,int> > usu[1133];
multiset < pair <int,int> > ms;
void dfs(int x)
{
viz[x]=1;
for(int i=0;i<v[x].size();++i) if(!viz[v[x][i]]) dfs(v[x][i]);
ord[++ord[0]]=x;
}
int main()
{
f>>n>>m>>k;
while(m--)
{
f>>a>>b>>c;
v[a].push_back(b);
usu[b].push_back({a,c});
}
dfs(1);
sol[1].push_back(0);
for(int i=n-1;i>=1;--i)
{
ms.clear();
x=ord[i];
for(int j=0;j<usu[x].size();++j)
{
nr[usu[x][j].a1]=0;
val[usu[x][j].a1]=usu[x][j].a2;
ms.insert({sol[usu[x][j].a1][0]+usu[x][j].a2,usu[x][j].a1});
}
while(sol[x].size()<k&&!ms.empty())
{
pair <int,int> t=*ms.begin();
ms.erase(ms.begin());
sol[x].push_back(t.a1);
if(++nr[t.a2]<sol[t.a2].size()) ms.insert({sol[t.a2][nr[t.a2]]+val[t.a2],t.a2});
}
}
for(int i=0;i<k;++i) g<<sol[n][i]<<' ';
return 0;
}