Pagini recente » Cod sursa (job #1084755) | Cod sursa (job #980528) | Cod sursa (job #2604022) | Cod sursa (job #2187336) | Cod sursa (job #5559)
Cod sursa(job #5559)
#include <stdio.h>
#include <string.h>
#include <queue>
using namespace std;
#define maxN 10
FILE*fo;
int n,m,p, adi[maxN][maxN], con[maxN][maxN], part[maxN];
int need, ron;
void inputFunc(){
FILE*fi=fopen("flood.in", "r");
fscanf(fi, "%d %d", &n, &m);
for(int i=0; i<m; i++){
int a,b;
fscanf(fi, "%d %d", &a, &b);
adi[--a][--b]=adi[b][a]=1;
}
fscanf(fi, "%d", &p);
for(int i=0; i<p; i++){
int a,b,c;
fscanf(fi, "%d %d %d", &a, &b, &c);
con[--a][--b]=con[b][a]=c;
}
fclose(fi);
}
void outneed(){fprintf(fo, "%d\n", need-1);fflush(fo);}
void outron(){fprintf(fo, "%d\n", ron);fflush(fo);}
void impart(){
int*viz=new int[maxN];
memset(viz, 0, sizeof*viz*maxN);
for(int i=0; i<n; i++)if(!viz[i]){
need++;
queue<int> qu;
qu.push(i);viz[i]=1;part[i]=need;
while(!qu.empty()){
int x=qu.front();qu.pop();viz[x]=1;
for(int j=0; j<n; j++)if(!viz[j] && adi[i][j]){
qu.push(j);part[j]=need;viz[j]=1;
}
}
}
}
int main(){
inputFunc();fo=fopen("flood.out", "w");
impart();outneed();
return 0;
}