#include <string>
#include <vector>
using namespace std;
struct kekeke{
int x;
int y;
};
vector <int> win[101];
vector <int> lose[101];
struct kekeke keke[101];
bool visited[101];
int Max(int x, int y)
{
if(x>y)
return x;
return y;
}
void func(int x, int y, int z)
{
for(int i=0;i<win[x].size();i++)
{
keke[win[x][i]].x=Max(keke[win[x][i]].x, y);
}
for(int i=0;i<lose[x].size();i++)
{
keke[lose[x][i]].y=Max(keke[lose[x][i]].y, z-y+1);
}
}
int solution(int n, vector<vector<int>> results) {
int answer = 0;
for(int i=0;i<101;i++)
{
keke[i].x=0;
keke[i].y=0;
}
for(int i=0;i<results.size();i++)
{
int a=results[i][0];
int b=results[i][1];
win[a].push_back(b);
lose[b].push_back(a);
keke[a].y+=;
keke[b].x++;
}
int p=1;
while(p)
{
int i;
for(i=1;i<=n;i++)
{
if(keke[i].x+keke[i].y>=n-1&&!visited[i])
{
answer++;
visited[i]=true;
func(i, keke[i].x+1, n);
break;
}
}
if(i==n+1)
p=0;
}
return answer;
}
#include <string>
#include <vector>
#include <queue>
using namespace std;
vector<int> link[101];
int dab[101];
void bfs(int x)
{
queue<int> que;
for(int i=0;i<link[x].size();i++)
{
que.push(link[x][i]);
}
while(!que.empty())
{
int a=que.top();
que.pop();
}
}
int solution(int n, vector<vector<int>> results) {
int answer = 0;
for(int i=0;i<results.size();i++)
{
int a=results[i][0];
int b=results[i][1];
link[a].push_back(b);
dab[a]++;
dab[b]++;
}
for(int i=1;i<=n;i++)
{
bfs(i);
}
return answer;
}