Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- class Grafo{
- int V;
- list<int> *adj;
- public:
- Grafo (int V);
- void adicionarAresta(int v1, int v2);
- int bfs(int v);
- };
- Grafo::Grafo(int V){
- this->V = V;
- adj = new list<int>[V];
- }
- void Grafo::adicionarAresta(int v1, int v2){
- adj[v1].push_back(v2);
- }
- int Grafo::bfs(int v){
- queue<int> fila;
- bool visitados[V];
- int contador=0;
- for(int i=0; i<V; i++){
- visitados[i] = false;
- }
- visitados[v] = true;
- while(true){
- list<int>::iterator it;
- for(it=adj[v].begin(); it!=adj[v].end(); it++){
- if(!visitados[*it]){
- contador++;
- visitados[*it] = true;
- fila.push(*it);
- }
- }
- if(!fila.empty()){
- v = fila.front();
- fila.pop();
- }
- else{
- return contador;
- }
- }
- }
- int main(){
- int N, M, V, W, P, test, sum;
- while(true){
- sum = 0;
- scanf("%d %d", &N, &M);
- if(N==0 && M==0) return 0;
- Grafo grafo(N);
- test=M;
- while(test--){
- scanf("%d %d %d", &V, &W, &P);
- grafo.adicionarAresta(V-1,W-1);
- if(P==2) grafo.adicionarAresta(W-1,V-1);
- }
- for(int i=0; i<N; i++){
- sum += grafo.bfs(i);
- }
- (sum/(N-1) == (N)) ? printf("1\n") : printf("0\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment