原因代码10044-Erdos number Time limit exceeded
近期筆者幾篇文章介紹了改原因代碼的文章. 關聯(lián)文章的地址
????以下是我的代碼,但是在通過uva試測是time limit exceeded, 不道知是什么原因,而且我自己試測了幾個數(shù)據(jù)都是對的。
每日一道理嶺上嬌艷的鮮花,怎敵她美麗的容顏?山間清澈的小溪,怎比她純潔的心靈?
#include<iostream> #include<string> #include<vector> #include<map> #include<stdio.h> #include<algorithm>using namespace std;string Erdos="Erdos, P."; string Scenario="Scenario "; string Infinity="infinity"; map<string,int> Scientists;void loopFind(map<int,vector<string> > map_name,vector<string> parters,vector<int> lines,int value){if(parters.size()<=0)return;for(int i=0;i<parters.size();++i){vector<string> parter1;vector<int> lines1;string tmp=parters.at(i);for(map<int,vector<string> >::iterator it=map_name.begin();it!=map_name.end();++it){vector<string> tmpNames=it->second;vector<int>::iterator tmpIndex=find(lines.begin(),lines.end(),it->first);vector<string>::iterator it1=find(tmpNames.begin(),tmpNames.end(),tmp);if(tmpIndex!=lines.end())break;else if(it1!=tmpNames.end()){for(int j=0;j<tmpNames.size();++j){string tmp1=tmpNames.at(j);if(tmp1!=tmp){Scientists[tmp1]=value;parter1.push_back(tmp1);}}lines1.push_back(it->first);}}loopFind(map_name,parter1,lines1,value+1);} }void findScientists(map<int,vector<string> > map_name){Scientists[Erdos]=0;vector<string> parters;vector<int> lines;for(map<int,vector<string> >::iterator it=map_name.begin();it!=map_name.end();++it){vector<string> names=it->second;vector<string>::iterator tmp=find(names.begin(),names.end(),Erdos);if(tmp!=names.end()){for(int i=0;i<names.size();++i){string tmp1=names.at(i);if(tmp1!=Erdos){Scientists[tmp1]=1;parters.push_back(tmp1);}}lines.push_back(it->first);}}loopFind(map_name,parters,lines,2); }void getErdosNumber(vector<string> paper,vector<string> names){int index=1;map<int,vector<string> > map_name;for(vector<string>:: iterator it=paper.begin();it!=paper.end();++it){string tmpString=*it;vector<string> tmpSci;int begin=0;int end=0;if(tmpString.length()<1)continue;while(end<tmpString.length()){if(tmpString[end]=='.'&&tmpString[end+1]==','&&tmpString[end+2]==' '){string tmpName=tmpString.substr(begin,end-begin+1);tmpSci.push_back(tmpName);begin=end+3;end=begin;}else if(tmpString[end]==':'){string tmpName=tmpString.substr(begin,end-begin);tmpSci.push_back(tmpName);break;}else ++end;}map_name[index]=tmpSci;++index;}findScientists(map_name); }int main(){int n=0;cin>>n;for(int i=1;i<=n;++i){int P=0;int N=0;cin>>P>>N;if(P<1||N<1)continue;getchar(); vector<string> paper;for(int x=0;x<P;++x){string tmpPaper;getline(cin,tmpPaper);paper.push_back(tmpPaper);}vector<string> names;for(int y=0;y<N;++y){string tmpName;getline(cin,tmpName);names.push_back(tmpName);}Scientists.clear();getErdosNumber(paper,names);cout<<Scenario<<i<<endl;map<string,int>::iterator it;for(vector<string>::iterator ite=names.begin();ite!=names.end();++ite){it=Scientists.find(*ite);if(it!=Scientists.end()){cout<<it->first<<" "<<it->second<<endl;}else{cout<<*ite<<" "<<Infinity<<endl;}}}return 0; }
????如果有人道知為什么會是time limit exceeded, 煩請告訴,感謝
文章結束給大家分享下程序員的一些笑話語錄: 有一天,一個男人穿越森林的時候,聽到一個細微的聲音叫住他。他低頭一看,是一只青蛙。
“如果你親我一下,我會變成一個美麗的公主哦。”男人一言不發(fā),把青蛙撿起來,放入口袋。
“如果你親我一下,我會變成一個美麗的公主哦。而且,我會告訴我遇到的每一個人,你是多么聰明和勇敢,你是我的英雄。”男人把青蛙拿出來,對著它微微一笑,又把它放回口袋。
“如果你親我一下,我會變成一個美麗的公主,然后我愿意成為你的愛人一星期。”男人又把青蛙拿出來,對著它微微一笑,把它放回口袋。
“如果你親我一下,我會變成一個美麗的公主,然后我愿意成為你的愛人一年,而且你可以對我做任何事。”再一次,男人把青蛙拿出來,對著它微微一笑,又把它放回口袋。
最后,青蛙無力地問:“我開出了這么好的條件,為什么你還不肯吻我?”男人說:“我是一個程序員,我可沒時間和什么公主鬼混。不過,擁有一個會說話的青蛙,倒是蠻酷的。”
轉載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/03/3057355.html
總結
以上是生活随笔為你收集整理的原因代码10044-Erdos number Time limit exceeded的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝牙分享
- 下一篇: 解决GIT代码仓库不同步问题