Pagini recente » Cod sursa (job #2951358) | Cod sursa (job #510378) | Cod sursa (job #1613289)
#include <fstream>
#include <vector>
#include <queue>
#define inf 100000000
using namespace std;
ifstream fin("ubuntzei.in");
ofstream fout("ubuntzei.out");
struct cel{
int muc, co;
} aux;
struct oras{
int a, poz;
} orase[20];
queue<int> coada;
vector<cel> ad[2005];
int n, m, x, y, c, cost[20][20], k, val[2010],now,nxt;
void reset_val(){
for(int i = 0; i < n; ++i){
val[i] = inf;
}
}
int main()
{
fin >> n >> m >> k;
orase[0].a = 0;
orase[0].poz = 0;
for(int i = 1; i <= k; ++i){
fin >> orase[i].a;
orase[i].a--;
orase[i].poz = i;
}
++k;
orase[k].a = n - 1;
orase[k].poz = k;
for(int i = 1; i <= m; ++i){
fin >> x >> y >> c;
x--;
y--;
aux.co = c;
aux.muc = y;
ad[x].push_back(aux);
aux.muc = x;
ad[y].push_back(aux);
}
for(int i = 0; i < k - 1; ++i)
for(int j = 0; j < k; ++j)
cost[i][j] = inf;
for(int i = 0; i < k; ++i){
reset_val();
val[orase[i].a] = 0;
coada.push(i);
while(!coada.empty()){
now = coada.front();
coada.pop();
int lung = ad[now].size();
for(int j = 0; j < lung; ++j){
int nxt = ad[now][j].muc;
if(val[nxt] > ad[now][j].co){
val[nxt] = ad[now][j].co;
coada.push(nxt);
}
}
}
for(int j = 0; j < k; ++j){
if(i != j){
}
}
}
return 0;
}