<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ErdosNumbers%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD</id>
	<title>ErdosNumbers/문보창 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ErdosNumbers%2F%EB%AC%B8%EB%B3%B4%EC%B0%BD"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ErdosNumbers/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;action=history"/>
	<updated>2026-05-15T07:34:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=ErdosNumbers/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=31686&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ErdosNumbers/%EB%AC%B8%EB%B3%B4%EC%B0%BD&amp;diff=31686&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 소감 ==&lt;br /&gt;
== 소드 ==&lt;br /&gt;
 //#include &amp;amp;lt;fstream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;cstdlib&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 //fstream fin(&amp;quot;input.txt&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 const int MAX_STR = 20;&lt;br /&gt;
 const int MAX_ERNUM = 100;&lt;br /&gt;
 &lt;br /&gt;
 typedef struct Node * pNode;&lt;br /&gt;
 typedef struct Node &lt;br /&gt;
 {&lt;br /&gt;
 	char name[MAX_STR];&lt;br /&gt;
 	pNode next;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 pNode head[MAX_ERNUM];&lt;br /&gt;
 int ernum;&lt;br /&gt;
 &lt;br /&gt;
 void set_configuration();&lt;br /&gt;
 void init();&lt;br /&gt;
 void input_thesis(int num_thesis);&lt;br /&gt;
 void input_writer(int num_writer);&lt;br /&gt;
 bool slice_str(char * thesis);&lt;br /&gt;
 bool make_map(char name[][MAX_STR], int num);&lt;br /&gt;
 void insert_list(char * name);&lt;br /&gt;
 int serch_erdos_num(char * name);&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	set_configuration();&lt;br /&gt;
 	int num_case, num_thesis, num_writer;&lt;br /&gt;
 	cin &amp;amp;gt;&amp;amp;gt; num_case;&lt;br /&gt;
 	for (int i = 0; i &amp;amp;lt; num_case; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		init();&lt;br /&gt;
 		cin &amp;amp;gt;&amp;amp;gt; num_thesis &amp;amp;gt;&amp;amp;gt; num_writer;&lt;br /&gt;
 		cin.get();&lt;br /&gt;
 		input_thesis(num_thesis);&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;Scenario &amp;quot; &amp;amp;lt;&amp;amp;lt; i + 1 &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 		input_writer(num_writer);&lt;br /&gt;
 	}&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void set_configuration()&lt;br /&gt;
 {&lt;br /&gt;
 	pNode temp;&lt;br /&gt;
 	for (int i = 0; i &amp;amp;lt; MAX_ERNUM; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		temp = new Node[sizeof(Node)];&lt;br /&gt;
 		temp-&amp;amp;gt;next = NULL;&lt;br /&gt;
 		head[i] = temp;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	temp = new Node[sizeof(Node)];&lt;br /&gt;
 	temp-&amp;amp;gt;next = NULL;&lt;br /&gt;
 	head[0]-&amp;amp;gt;next = temp;&lt;br /&gt;
 	strcpy(head[0]-&amp;amp;gt;next-&amp;amp;gt;name, &amp;quot;Erdos, P.&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void init()&lt;br /&gt;
 {&lt;br /&gt;
 	for (int i = 1; i &amp;amp;lt; MAX_ERNUM; i++)&lt;br /&gt;
 		head[i]-&amp;amp;gt;next = NULL;&lt;br /&gt;
 	ernum = 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void input_thesis(int num_thesis)&lt;br /&gt;
 {&lt;br /&gt;
 	// 메모리 할당&lt;br /&gt;
 	char ** thesis = new char * [num_thesis];&lt;br /&gt;
 	for (int i = 0; i &amp;amp;lt; num_thesis; i++)&lt;br /&gt;
 		thesis[i] = new char[100];&lt;br /&gt;
 	bool * ischeck = new bool[num_thesis];&lt;br /&gt;
 &lt;br /&gt;
 	ernum++;&lt;br /&gt;
 &lt;br /&gt;
 	for (i = 0; i &amp;amp;lt; num_thesis; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		cin.getline(thesis[i], 100, &amp;#039;:&amp;#039;);&lt;br /&gt;
 		while (cin.get() != &amp;#039;\n&amp;#039;)&lt;br /&gt;
 			continue;&lt;br /&gt;
 		ischeck[i] = slice_str(thesis[i]);&lt;br /&gt;
 	}&lt;br /&gt;
 	/* 여기까지가 에르되시의 수 1을 구한다. */&lt;br /&gt;
 &lt;br /&gt;
 	bool iscontinue = true;&lt;br /&gt;
 	while (iscontinue)&lt;br /&gt;
 	{&lt;br /&gt;
 		ernum++;&lt;br /&gt;
 		iscontinue = false;&lt;br /&gt;
 		for (i = 0; i &amp;amp;lt; num_thesis; i++)&lt;br /&gt;
 		{&lt;br /&gt;
 			if (ischeck[i] == false)&lt;br /&gt;
 			{&lt;br /&gt;
 				ischeck[i] = slice_str(thesis[i]);&lt;br /&gt;
 				if (ischeck[i] == true)&lt;br /&gt;
 					iscontinue = true;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	delete [] ischeck;&lt;br /&gt;
 	for (i = 0; i &amp;amp;lt; num_thesis; i++)&lt;br /&gt;
 		delete thesis[i];&lt;br /&gt;
 	delete thesis;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool slice_str(char * thesis)&lt;br /&gt;
 {&lt;br /&gt;
 	char name[10][MAX_STR];&lt;br /&gt;
 	int num_person = 0;&lt;br /&gt;
 	int rest_count = 0;&lt;br /&gt;
 	int i, j;&lt;br /&gt;
 	i = j = 0;&lt;br /&gt;
 &lt;br /&gt;
 	while (thesis[i] != NULL)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (thesis[i] == &amp;#039;,&amp;#039;)&lt;br /&gt;
 			rest_count++;&lt;br /&gt;
 		if (rest_count == 2 &amp;amp;amp;&amp;amp;amp; thesis[i] == &amp;#039;,&amp;#039;)&lt;br /&gt;
 		{&lt;br /&gt;
 			name[num_person][j] = &amp;#039;\0&amp;#039;;&lt;br /&gt;
 			num_person++;&lt;br /&gt;
 			j = -1;&lt;br /&gt;
 			rest_count = 0;&lt;br /&gt;
 			if (thesis[i+1] == &amp;#039; &amp;#039;)&lt;br /&gt;
 				i++;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 			name[num_person][j] = thesis[i];&lt;br /&gt;
 		i++;&lt;br /&gt;
 		j++;&lt;br /&gt;
 	}&lt;br /&gt;
 	name[num_person][j] = &amp;#039;\0&amp;#039;;&lt;br /&gt;
 	bool isMake = make_map(name, num_person + 1);		// 맵에 추가되었다면&lt;br /&gt;
 	return isMake;&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool make_map(char name[][MAX_STR], int num)&lt;br /&gt;
 {&lt;br /&gt;
 	bool isCheck = false;&lt;br /&gt;
 	bool * isInserted = new bool[num];&lt;br /&gt;
 	for (int i = 0; i &amp;amp;lt; num; i++)&lt;br /&gt;
 		isInserted[i] = 0;&lt;br /&gt;
 &lt;br /&gt;
 	pNode temp = head[ernum-1]-&amp;amp;gt;next;&lt;br /&gt;
 &lt;br /&gt;
 	while (temp != NULL)&lt;br /&gt;
 	{&lt;br /&gt;
 		for (int i = 0; i &amp;amp;lt; num; i++)			&lt;br /&gt;
 		{&lt;br /&gt;
 			if (strcmp(name[i], temp-&amp;amp;gt;name) == 0)&lt;br /&gt;
 			{&lt;br /&gt;
 				isCheck = true;&lt;br /&gt;
 				isInserted[i] = 1;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		temp = temp-&amp;amp;gt;next;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	if (isCheck)	// 기존 맵에 존재한다면 추가&lt;br /&gt;
 	{&lt;br /&gt;
 		for (int i = 0; i &amp;amp;lt; num; i++)&lt;br /&gt;
 		{&lt;br /&gt;
 			if (isInserted[i] == false)		// 아직 추가되지 않았다면 추가&lt;br /&gt;
 				insert_list(name[i]);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	delete [] isInserted;&lt;br /&gt;
 	return isCheck;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void insert_list(char * name)&lt;br /&gt;
 {&lt;br /&gt;
 	pNode temp = head[ernum];&lt;br /&gt;
 	while (temp-&amp;amp;gt;next != NULL)&lt;br /&gt;
 		temp = temp-&amp;amp;gt;next;&lt;br /&gt;
 	pNode ptr = new Node[sizeof(Node)];&lt;br /&gt;
 	strcpy(ptr-&amp;amp;gt;name, name);&lt;br /&gt;
 	ptr-&amp;amp;gt;next = NULL;&lt;br /&gt;
 	temp-&amp;amp;gt;next = ptr;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int serch_erdos_num(char * name)&lt;br /&gt;
 {&lt;br /&gt;
 	pNode temp;&lt;br /&gt;
 	for (int i = 0; i &amp;amp;lt;= ernum; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		temp = head[i]-&amp;amp;gt;next;&lt;br /&gt;
 		while (temp != NULL)&lt;br /&gt;
 		{&lt;br /&gt;
 			if (strcmp(temp-&amp;amp;gt;name, name) == 0)&lt;br /&gt;
 				return i;&lt;br /&gt;
 			temp = temp-&amp;amp;gt;next;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	return -1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void input_writer(int num_writer)&lt;br /&gt;
 {&lt;br /&gt;
 	char name[20];&lt;br /&gt;
 	int result;&lt;br /&gt;
 	&lt;br /&gt;
 	for (int i = 0; i &amp;amp;lt; num_writer; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		cin.getline(name, 20, &amp;#039;\n&amp;#039;);&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; name &amp;amp;lt;&amp;amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
 		result = serch_erdos_num(name);&lt;br /&gt;
 		if (result == -1)&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;infinity\n&amp;quot;;&lt;br /&gt;
 		else&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; result &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
== 나한테 할 말 ==&lt;br /&gt;
----&lt;br /&gt;
[[ErdosNumbers]] [[AOI]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>