Pagini recente » Cod sursa (job #2939289) | Cod sursa (job #838959) | Cod sursa (job #2148816) | Cod sursa (job #492965) | Cod sursa (job #467297)
Cod sursa(job #467297)
#include <iostream>
#include <vector>
using namespace std;
#define nmax 100010
int N, M, V[nmax];
vector<pair<int, int> > G[nmax];
//C = 0 alb
//C = 1 rosu
//C = 2 violet
int main() {
FILE *f1=fopen("andrei.in", "r"), *f2=fopen("andrei.out", "w");
int i, j, p, q, c;
fscanf(f1, "%d %d\n", &N, &M);
for(i=1; i<=M; i++) {
fscanf(f1, "%d %d %d\n", &p, &q, &c);
G[p].push_back(make_pair(q, c));
G[q].push_back(make_pair(p, c));
}
srand(time(NULL));
//nu alb in A
//nu rosu in B
int ok = 1;
while(ok) {
ok = 0;
for(i=1; i<=N; i++) {
int p = rand() % 2;
V[i] = p;
}
for(i=1; i<=N; i++) {
if(V[i] == 0) {
//verific daca mai exista vreun nod in 0 care sa fie cu acesta alb
for(j=0; j<G[i].size(); j++) {
if(V[ G[i][j].first ] == 0 && G[i][j].second == 0) {
ok = 1;
break;
}
if(V[ G[i][j].first ] == 1 && G[i][j].second == 2) {
ok = 1;
break;
}
}
}
else if(V[i] == 1) {
//verific daca mai exista vreun nod in 1 care sa fie cu acesta rosu
for(j=0; j<G[i].size(); j++) {
if(V[ G[i][j].first ] == 1 && G[i][j].second == 1) {
ok = 1;
break;
}
if(V[ G[i][j].first ] == 0 && G[i][j].second == 2) {
ok = 1;
break;
}
}
}
}
}
for(i=1; i<=N; i++) {
fprintf(f2, "%d ", V[i]);
}
fprintf(f2, "\n");
fclose(f1); fclose(f2);
return 0;
}