{%hackmd theme-dark %}
# Grafos I
###### tags: `upsolving` `ps2020` `grafo`
## B
```cpp
const int N = 105;
vector<int> adj[N];
vector<string> v;
char s[N];
void compara(int a, int b) {
for(int i = 0; i < v[a].size() and i < v[b].size(); i++) {
if(v[a][i] != v[b][i]) {
adj[v[a][i]-'a'].pb(v[b][i]-'a');
return;
}
}
int main() {
for(int i = 1; i < v.size(); i++) {
compara(i-1, i);
}
}
```
## E

Ideia:
Guloso: Se um nó u é uma cidade de negócio, todas as árvores em sua ramificação também será uma cidade de negócio.
```cpp
//type here
priority_queue<int> pq;
int dfs(int u, int l){
if(vis[u])
return 0;
vis[u] = 1;
int filhos = 0;
for(int k : adj[u]){
filhos += dfs(k, l+1);
pq.push(l - filhos);
return filhos + 1;
}