順位


💪ランキング(プログラマ)
使用言語:C++
BFSで解決済み
コア:隣接するリストを昇順、降順に並べ、それぞれキュー化
1.解答(BFS)
#include <iostream>
#include <string>
#include <vector>
#include <deque>

using namespace std;

int solution(int n, vector<vector<int>> results) {
    vector<int> graph[101];
    vector<int> rgraph[101];
    
    int answer = 0;
    
    for(int i=0; i<results.size(); i++){
        int x = results[i][0];
        int y = results[i][1];
        graph[x].push_back(y);  
        rgraph[y].push_back(x);  // 역순
    }
    
    for(int v=1; v<=n; v++){
        
        int check[101] = {0, };
        
        deque<int> q;
        
        int winner = 0;
        int loser = 0;
        
        q.push_back(v);
        check[v] = 1;
        
        while(!q.empty()){
            
            int now = q.front();
            q.pop_front();
                 
            for(int next : graph[now]){
                if(check[next] != 1){
                    q.push_back(next);
                    check[next] = 1;
                    winner++;
                }
            }
        }   
     
        q.push_back(v);
        
        while(!q.empty()){
            int now = q.front();
            q.pop_front();

            for(int next : rgraph[now]){
                if(check[next] != 1){
                    q.push_back(next);
                    check[next] = 1;
                    loser++;
                }
            }
        }
        
        if((winner + loser) == n-1){
            answer++;
        }
        
    }
    
    return answer;
}
2.リンク
https://programmers.co.kr/learn/courses/30/lessons/49191
コード内のキーの順序に似た問題
https://codeup.kr/problem.php?id=4714