conteudo
grafo
ps2020
dfs
toposort
Um grafo é um par ordenado G(V, E), onde:
G1: V = {v1, v2, v3}, E = {v1v2, v2v3}
Learn More →
Learn More →
Learn More →
Learn More →
4 4 (n m (nº de vértices e nº de arestas)
1 2
1 3
2 3
3 4
4 3
Learn More →
0 1 1 0
0 0 1 0
0 0 0 1
0 0 1 0
const int N = 1e3;
int n, m;
int adj[N][N];
int main() {
scanf("%d%d", &n, &m);
for(int i = 0; i < n=m; i++) {
int a, b;
scanf("%d%d%d", &a, &b);
adj[a][b] = 1;
}
}
Learn More →
0 5 3 0
5 0 1 0
3 1 0 4
0 0 4 0
const int N = 1e5;
int n, m;
int adj[N][N];
int main() {
scanf("%d%d", &n, &m);
for(int i = 0; i < n=m; i++) {
int a, b, c;
scanf("%d%d", &a, &b, &c);
adj[a][b] = c;
adj[b][a] = c;
}
}
Learn More →
1: 2, 3
2: 3
3: 3
4: 3
int n, m;
vector<int> adj[N];
int main() {
scanf("%d%d", &n, &m);
for(int i = 0; i < n=m; i++) {
int a, b;
scanf("%d%d", &a, &b);
adj[a].push_back(b);
}
}
Learn More →
int n, m;
vector<pair<int, int>> adj[N];
int main() {
scanf("%d%d", &n, &m);
for(int i = 0; i < n=m; i++) {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
adj[a].push_back({b, c});
adj[b].push_back({a, c});
}
}
Learn More →
vector<int> adj[N];
int vis[N];
void dint uf {
if(vis[u]) return;
vis[u] = 1;
for(int v: adj[u]) {
dfs(v);
}
/*
for(int i = 0; i < adj[u].size(); i++) {
dfs(adj[u]);
}
*/
Learn More →
int vis[N];
void bfs() {
queue<int> q;
q.push(1);
vis[1] = 1;
while(!q.empty()) {
int u = q;
q.pop();
for(int v: adj[u]) {
if(!vis[v]) {
q.push(v);
vis[v] = vis[u] + 1;
}
Learn More →
F E C D B G A
vector<int> ord;
void toposort(int u) {
if(vis[u]) return;
vis[u] = 1;
for(int v: adj[u]) {
toposort(v);
}
ord.push_back(u);
}
ndep[A] = 1
ndep[B] = 3
...
adj[u] = lista de dependências de u
adjrev[u] = lista de nós que dependem de u
int ndep[N];
vector<int> adjrev[N], adj[N];
vector<int> ord;
queue<int> process;
int main() {
....
for(int i = 0; i < n; i++) if(ndep[u] == 0) process.push[u];
while(!q.empty()) {
int u = q.front();
q.pop();
ord.push_back(u);
for(int v: revadj[u]) {
ndep[v]--;
if(ndep[v] == 0) q.push(v);
}
}
}
Estrutura Básica: struct ListNode { int val; ListNode* next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} }; Visualizando...
Jul 11, 2020Trie Estrutura de dados Prefix Tree Cada aresta representa um símbolo do alfabeto Cada nó representa uma palavra, que corresponde a todas as arestas no caminho da raiz até o nó Lista de palavras: t
Jun 17, 2020{%hackmd theme-dark %} C #define pb push_back; #define all(x) x.begin(), x.end() bool prime[N] = {true}; void Sieve(int n){
Jun 11, 2020{%hackmd theme-dark %} Estruturas de dados Estrutura de dados é o ramo da computação que estuda os diversos mecanismos de organização de dados para atender aos diferentes requisitos de processamento. Exemplos: Pilha, Fila, Lista encadeada, Árvores binárias, Heap, DSU BIT, Segment tree, Treap, Sparse table
Jun 11, 2020or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up