Pagini recente » Cod sursa (job #220269) | Cod sursa (job #5333) | Cod sursa (job #2284861) | Cod sursa (job #1882681) | Cod sursa (job #1026975)
#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 <int> q;
Nod temp;
int tata,fiu,costnou;
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);
}
q.push(1);
cost[1]=0;
incoada[1]=true;
while(!q.empty())
{
tata=q.front();
q.pop();
incoada[tata]=false;
for(i=0;i<vecini[tata].size();i++)
{
fiu=vecini[tata][i].nod;
costnou=cost[tata]+vecini[tata][i].cost;
if (cost[fiu]>costnou)
{
cost[fiu]=costnou;
if(!incoada[fiu])
{
incoada[fiu]=true;
q.push(fiu);
}
}
}
}
for(i=2;i<=n;i++)
{
if(cost[i]!=INF)
printf("%d ",cost[i]);
else
printf("0 ");
}
return 0;
}