Pagini recente » Cod sursa (job #816488) | Cod sursa (job #383375) | Cod sursa (job #1528600) | Cod sursa (job #264630) | Cod sursa (job #1920262)
#include <fstream>
#include <iostream>
#include <vector>
#define maxn 100005
#define INF 0x3f3f3f3f
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> v[maxn];
int n, m, sol, maxim = -INF, sum;
int visited[maxn], cost[maxn];
void DFS(int current){
visited[current] = 1;
for(int i = 0; i < v[current].size(); ++i){
int nod = v[current][i];
cout << nod << ' ';
if(!visited[nod]){
maxim += cost[nod];
DFS(nod);
}
}
}
int main(){
f >> n >> m;
for(int i = 1; i <= n; ++i) f >> cost[i];
for(int i = 1; i <= m; ++i){
int x, y;
f >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
for(int i = 1; i <= n; ++i){
sum = cost[i];
if(!visited[i]){
DFS(i);
if(sum > maxim) maxim = sum;
}
}
g << maxim << '\n';
}