Pagini recente » Cod sursa (job #821738) | Cod sursa (job #307617) | Cod sursa (job #1837997) | Cod sursa (job #442852) | Cod sursa (job #2233867)
#include <bits/stdc++.h>
using namespace std;
int n, m;
int out[8200], in[8200], val[8200];
vector <int> v[8200];
vector <int> v2[8200];
set <int> gr[8200];
set <int> gr2[8200];
int main()
{
freopen("felinare.in", "r", stdin);
freopen("felinare.out", "w", stdout);
scanf("%d%d", &n, &m);
int x, y;
for(int i = 1; i <= m ; ++i){
scanf("%d%d", &x, &y);
v[x].push_back(y);
v2[y].push_back(x);
++out[x]; ++in[y];
}
for(int i = 1; i <= n ; ++i) val[i] = 3, gr[out[i]].insert(i), gr2[in[i]].insert(i);
for(int i = n; i >= 1 ; --i){
for(auto it : gr[i]){
--val[it];
for(auto it2 : v[it]){
gr2[in[it2]].erase(it2);
gr2[--in[it2]].insert(it2);
}
}
for(auto it : gr2[i]){
val[it] -= 2;
for(auto it2 : v2[it]){
gr[out[it2]].erase(it2);
gr[--out[it2]].insert(it2);
}
}
}
int Sol = gr[0].size() + gr2[0].size();
printf("%d\n", Sol);
for(int i = 1; i <= n ; ++i)
printf("%d\n", val[i]);
return 0;
}