Pagini recente » Cod sursa (job #2443530) | Cod sursa (job #890249) | Cod sursa (job #1762247) | Cod sursa (job #3149568) | Cod sursa (job #1026939)
#include<cstdio>
#include<queue>
#include<vector>
const int MAX_N=50000;
const int MAX_M=250000;
const int INF=0x7fffffff;
//0111 1111 1111 1111 1111 1111 1111 1111
using namespace std;
struct Nod
{
int cost,nod;
};
int cost[MAX_N + 1],n,m,i,a,b,c;
bool incoada[MAX_N + 1];
vector <Nod> vecini[MAX_N + 1];
queue <Nod> q;
Nod temp,fiu;
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
cost[i]=INF;
incoada[i]=false;
}
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
temp.cost=c;
temp.nod=b;
vecini[a].push_back(temp);
}
temp.nod=1;
temp.cost=0;
q.push(temp);
cost[1]=0;
incoada[1]=true;
while(!q.empty())
{
temp=q.front();
q.pop();
incoada[temp.nod]=false;
for(i=0;i<vecini[temp.nod].size();i++)
{
fiu.cost=temp.cost+vecini[temp.nod][i].cost;
fiu.nod=vecini[temp.nod][i].nod;
if(cost[fiu.nod]>fiu.cost)
{
cost[fiu.nod]=fiu.cost;
if(!incoada[fiu.nod])
{
incoada[fiu.nod]=true;
q.push(fiu);
}
}
}
}
for(i=2;i<=n;i++)
{
if(cost[i]!=INF)
printf("%d ",cost[i]);
else
printf("0 ");
}
return 0;
}