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
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
#include<iostream>
#include<vector>
using namespace std;

int tab[200000], ile[200000]; 
 
int Find(int a)
{
	if (tab[a]==a) return a; 
	
	int fa = Find(tab[a]);
	tab[a] = fa; 
	return fa;
}
 
bool Union(int a, int b) 
{
	int fa = Find(a); 
	int fb = Find(b); 
 
	if (fa==fb) return false; 
	if (ile[fa] <= ile[fb])
	{
		ile[fb] += ile[fa];
		tab[fa] = fb;
	}
	else
	{
		ile[fa] += ile[fb];
		tab[fb] = fa;
	}
	return true;
}
 struct para
 {
 int a,b;	
 };
int main()
{
	
 	ios_base::sync_with_stdio(0);
	int n,m,k;
	cin>>n>>m>>k;
	para zmiany[m];
	long long int ilosc[n];
	vector<para>reakcje(k);
	for (int i=0; i<n; i++)
	{
		tab[i] = i; 
		ile[i] = 1; 
	}
	
	for(int i=0;i<n;i++)
	{
		cin>>ilosc[i];
	}
	
	for(int i=0;i<m;i++)
	{
		cin>>zmiany[i].a>>zmiany[i].b;
		zmiany[i].a--;
		zmiany[i].b--;
	}
 	
 	for(int i=0;i<k;i++)
 	{
		
 		cin>>reakcje[i].a>>reakcje[i].b;
 		reakcje[i].a--;
 		reakcje[i].b--;
 	}
 
 	long long int wyn=0;
 		//cout<<"juz";
  	for(int i=0;i<m;i++)
  	{
		
			Union(zmiany[i].a,zmiany[i].b);
		
  		  		for(int i2=0;i2<reakcje.size();i2++)
  		{
  			if(Find(reakcje[i2].a)==Find(reakcje[i2].b))
  			{
  				if(ilosc[reakcje[i2].a]>ilosc[reakcje[i2].b])
  				{
  					wyn=wyn+ilosc[reakcje[i2].b]*2;
  					ilosc[reakcje[i2].a]=ilosc[reakcje[i2].a]-ilosc[reakcje[i2].b];
  					ilosc[reakcje[i2].b]=0;
  					
  				}
  				else
  				{
  					wyn=wyn+ilosc[reakcje[i2].a]*2;
  					ilosc[reakcje[i2].b]=ilosc[reakcje[i2].b]-ilosc[reakcje[i2].a];
  					ilosc[reakcje[i2].a]=0;
  					
  					
  				}
  				reakcje.erase(reakcje.begin()+i2);
  			}
  		}
  		
			
		
  	}
  	cout<<wyn<<"\n";
    return 0;
}