发量不减

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

统计入度出度的问题
注意数组定义初始化问题

//找到小镇的法官
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;

/**
 * 特别注意,在使用变量定义数组长度时,不能同时进行初始化,否则编译错误
 * 要像下面定义t数组那样进行初始化
*/
int findJudge(int n, vector<vector<int> >& trust) {

    int t[n+1];
    for(int i = 0; i<n+1; i++)
        t[i] = 0;

    //找出度为0的人
    for(int i = 0; i<trust.size(); i++)
    {
        t[trust[i][0]]++;
    }

    int num = 0, index = 0;
    for(int i = 1;i<n+1; i++)
    {
        if(t[i]==0)
        {
            num++;
            index = i;
        }
    }

    if(num>1||num==0)
        return -1;

    int sum = 0;
    //找index的入度
    for(int i = 0; i<trust.size(); i++)
    {
        if(trust[i][1]==index)
        {
            sum++;
        }
    }

    if(sum==n-1)
        return index;

    return -1;
}

int main()
{
    vector<int> v;
    v.push_back(1);
    v.push_back(2);

    vector<vector<int> > trust;
    trust.push_back(v);

    int result = findJudge(2, trust);

    cout<<result<<endl;

    return 0;
}
posted on 2024-01-09 16:18  不是孩子了  阅读(1)  评论(0编辑  收藏  举报