问题描述:图论,给定一些通话记录,判断一个人是否是嫌疑人,以及该嫌疑人所属团伙。
解题思路:首先读入通话记录,然后根据条件判断是否是嫌疑人,然后将嫌疑人排序,便于输出。然后再判断那些嫌疑人是相互连接的。然后输出。
AC代码:
#include<iostream>
#include<vector>
#include<cstdio>
#include<set>
#include<algorithm>
using namespace std;
#define MAX 1005
#define INF 14400
int tu[MAX][MAX],K,M,N;
bool vis[MAX]={0};
vector<int>out;
set<int>gan;
void visit(int v)
{
vis[v]=1;gan.insert(v);
for(int i=0;i<out.size();++i){
if(vis[out[i]]==0&&tu[v][out[i]]<INF&&tu[out[i]][v]<INF)visit(out[i]);
}
}
int main()
{
//freopen("test.txt","r",stdin);
scanf("%d%d%d",&K,&N,&M);
int c,r,d;
for(int i=1;i<=N;++i){
for(int j=1;j<=N;++j){
tu[i][j]=INF;
}
}
while(M--){
scanf("%d%d%d",&c,&r,&d);
if(tu[c][r]==INF)tu[c][r]=d;
else tu[c][r]+=d;
}
for(int i=1;i<=N;++i){
int cn