Pagini recente »
Istoria paginii runda/2013-03-08-test-9-10/clasament
|
Istoria paginii runda/2015oliscoala9/clasament
|
Istoria paginii runda/vaslui_cls78_08.12/clasament
|
Monitorul de evaluare
|
Cod sursă (job #14513)
Cod sursă (job
#14513)
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
#define N 10005
struct road
{
int to;
int d;
};
//bool viz[N];
int D[N],P[N];
vector <road> a[N];
queue <int> q;
int n,k;
void read()
{
int x,y,c;
int m;
scanf("%d%d%d",&n,&m,&k);
while(m--)
{
scanf("%d%d%d",&x,&y,&c);
a[x].push_back((road){y,c});
a[y].push_back((road){x,c});
}
}
void solve()
{
D[1]=0;
for(int i=2;i<=n;++i)
D[i]=-1;
size_t i;
int x,y,t;
while(!q.empty())
{
x=q.front();
q.pop();
//viz[x]=1;
for(i=0;i<a[x].size();++i)
{
y = a[x][i].to;
//t = D[x]+a[x][i].d;
t = a[x][i].d;
if(P[x]!=y)
if(D[y]==-1 || D[y]>t)
{
q.push(y);
D[y]=t;
P[y]=x;
}
}
}
}
void afis()
{
int s=0;
for(int i=1;i<=n;++i)
s+=D[i];
printf("%d\n",s);
}
int main()
{
freopen("zapada.in","r",stdin);
freopen("zapada.out","w",stdout);
read();
/*D[1]=0;
for(int i=2;i<=n;++i)
D[i]=-1;*/
q.push(1);
solve();
afis();
int x,y,c;
while(k--)
{
scanf("%d%d%d",&x,&y,&c);
a[x].push_back((road){y,c});
a[y].push_back((road){x,c});
q.push(1);
solve();
afis();
}
return 0;
}