use strict;
use warnings;


    # 使い方
    # perl correctAndman.pl merge_***.paj merge_***.paj *****
    # 時期(***)が同じPajファイルとsubCommunity_1，subCommunity_2のNetファイルの3つが必要

	# Pajファイルを読み込んでNode情報やArcs，Partition情報をそれぞれ配列に割り振るためのフラグ
	my ($flag4PajFile);
	# Pajファイルを一行ずつ取得するための変数
	my ($line);
	# Pajファイルの情報を取得するための変数ならびに配列
	my (@nodeNoInPajFile,@nodeNameInPajFile,@partition);
	# ループ処理で使う変数
	my ($i,$j,$k);
	# 結果を保存するための配列
	my (@list,@sortList);


############### Pajファイル，Netファイルを読み込んで必要な情報を取得 #########################


	for($i=0;$i<=$#ARGV;$i++){
		# Pajファイルで必要なのは，Node情報(アドレス)とArcs情報，Partition情報
		# まずは初期化
		$flag4PajFile = 0;
		@nodeNameInPajFile = ();
		@partition = ();

		open PAJ,$ARGV[$i] or die "file open error: $ARGV[$i]";
		while($line = <PAJ>){
			chomp($line);
			if($line =~ /\*Network/i){
				next;
			}
			elsif($line =~ /\*Arcs/i){
				$flag4PajFile = 1;
				next;
			}
			elsif($line =~ /\*Partition/i){
				if($line =~ /\*Partition high\.clu/i){
					last;
				}
				$flag4PajFile = 2;
				next;
			}

			# OSSコミュニティ参加者のアドレス一覧
			# $nodeNoInPajFile[0]には*Verticesが入る
			# e.g.) 1 "aaa@aaa.co.jp"　の場合，$nodeNoInPajFile[1]=1 $nodeNamePajFile[1]="aaa@aaa.co.jp"が入る
			if($flag4PajFile == 0){
				my($nodeNoInPajFile, $nodeNameInPajFile) = split / /, $line;
				push(@nodeNameInPajFile, $nodeNameInPajFile);
			}
			# partition情報の取得  e.g.) IDが1の人のpartition情報はpartition[1]に格納される
			# *Partition　○○.pajの次の行が*Vertices ノード数 なので，$partition[0]には"*Vertices ノード数"の文字列が入ってる
			elsif($flag4PajFile == 2){
				push(@partition, $line);
			}
		}
		close PAJ;

		for($j=0;$j<$nodeNameInPajFile[0];$j++){
			if($partition[$j] eq 3){
				$nodeNameInPajFile[$j] =~ s/"//g;
				push(@list, $nodeNameInPajFile[$j]."\n");
			}
		}
	}
	

	@sortList = sort {$a cmp $b} @list;

	for($k=0;$k<=$#sortList;$k++){
		if($sortList[$k] ne $sortList[$k+1]){
			print $sortList[$k];
		}
	}

