#include<cstdio> #include<algorithm> using namespace std; struct reakcja { int a,b; }; int ti[200009]; reakcja tk[200009], tr[500009],tr2[500009]; int min(int a, int b) { if (a<b) return a; else return b; } int main() { int n,m,k,mi; long long int wyn=0; scanf("%d%d%d",&n,&m,&k); for (int i=1;i<=n;i++) scanf("%d",&ti[i]); for (int i=0;i<m;i++) scanf("%d%d",&tk[i].a, &tk[i].b); for (int i=0;i<k;i++) { scanf("%d%d",&tr[i].a,&tr[i].b); tr2[i].a=tr[i].a; tr2[i].b=tr[i].b; } for (int i=0;i<m;i++) { for (int j=0;j<k;j++) { if(tr[j].a==tk[i].a) tr[j].a=tk[i].b; else if(tr[j].b==tk[i].a) tr[j].b=tk[i].b; if(tr[j].a==tr[j].b) { mi=min(ti[tr2[j].a],ti[tr2[j].b]); wyn+=mi; ti[tr2[j].a]-=mi; ti[tr2[j].b]-=mi; } } } printf("%lld",wyn*2); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include<cstdio> #include<algorithm> using namespace std; struct reakcja { int a,b; }; int ti[200009]; reakcja tk[200009], tr[500009],tr2[500009]; int min(int a, int b) { if (a<b) return a; else return b; } int main() { int n,m,k,mi; long long int wyn=0; scanf("%d%d%d",&n,&m,&k); for (int i=1;i<=n;i++) scanf("%d",&ti[i]); for (int i=0;i<m;i++) scanf("%d%d",&tk[i].a, &tk[i].b); for (int i=0;i<k;i++) { scanf("%d%d",&tr[i].a,&tr[i].b); tr2[i].a=tr[i].a; tr2[i].b=tr[i].b; } for (int i=0;i<m;i++) { for (int j=0;j<k;j++) { if(tr[j].a==tk[i].a) tr[j].a=tk[i].b; else if(tr[j].b==tk[i].a) tr[j].b=tk[i].b; if(tr[j].a==tr[j].b) { mi=min(ti[tr2[j].a],ti[tr2[j].b]); wyn+=mi; ti[tr2[j].a]-=mi; ti[tr2[j].b]-=mi; } } } printf("%lld",wyn*2); return 0; } |