/*20150131 hanting*/
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int N;
cin>>N;
while(N--)
{
int edge[3];
cin>>edge[0]>>edge[1]>>edge[2];
sort(edge,edge+3);
cout<<(edge[0]+edge[1]>edge[2] ? "OK":"Wrong!!")<<endl;
}
return 0;
}
2015年1月31日 星期六
[UVA] 11936 - The Lazy Lumberjacks
2015年1月30日 星期五
[UVA] 610 - Street Directions
/*20150131 hanting*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool Find(vector<int> &vec,int i)
{
vector<int>::iterator it=find(vec.begin(),vec.end(),i);
return (it!=vec.end());
}
int DFS(int *visit,vector<int> *node,int vertex,int parent,vector<int> *store)
{
static int time=0;
int mini=time;
visit[vertex]=time++;
for(int i=0;i<node[vertex].size();i++)
{
int temp=mini;
if(visit[ node[vertex][i] ]==-1)
{
store[vertex].push_back(node[vertex][i]);//路徑儲存
temp=DFS(visit,node,node[vertex][i],vertex,store);
if(temp>visit[vertex])//找橋
{
store[ node[vertex][i] ].push_back(vertex);
}
}
else if(node[vertex][i]!=parent)//其他路徑//backedge
{//若已存1 3 不必存3 1
if(!Find(store[ node[vertex][i] ],vertex))store[vertex].push_back(node[vertex][i]);
temp=visit[ node[vertex][i] ];
}
if(temp<mini) mini=temp;
}
return mini;//由backedge能回溯的最小visit
}
int main()
{
int nodeNum,connectNum;
int Times=0;
while(cin>>nodeNum>>connectNum && nodeNum+connectNum)
{
cout<<++Times<<endl<<endl;
vector<int> node[nodeNum+1];
for(int i=0;i<connectNum;i++)
{
int a,b;
cin>>a>>b;
node[a].push_back(b);
node[b].push_back(a);
}
int visit[nodeNum+1];
vector<int> store[nodeNum+1];
fill(visit,visit+nodeNum+1,-1);
for(int i=1;i<=nodeNum;i++)
{
if(visit[i]==-1)
{
DFS(visit,node,i,-1,store);
}
}
for(int i=1;i<=nodeNum;i++)
{
sort(store[i].begin(),store[i].end());
for(int j=0;j<store[i].size();j++)
{
cout<<i<<" "<<store[i][j]<<endl;
}
}
cout<<"#"<<endl;
}
return 0;
}
[UVA] 796 - Critical Links
/*20150131 hanting*/
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int DFS(vector<int> *vertex,int node,int parent,int *visit,vector<int> *store)
{
static int Count=0;
int mini=Count;
visit[node]=Count++;
for(int i=0;i<vertex[node].size();i++)
{
int temp=mini;
if(visit[ vertex[node][i] ]==-1)/*子節點 沒拜訪過的*/
{
temp=DFS(vertex,vertex[node][i],node,visit,store);
if(temp>visit[node])/*橋*/
{
int x=node;
int y=vertex[node][i];
if(x>y) swap(x,y);
store[x].push_back(y);
}
}
else if(vertex[node][i]!=parent)/*拜訪過 判斷回溯*/
{
temp=visit[ vertex[node][i] ];
}
if(mini>temp) mini=temp;
}
return mini;
}
int main()
{
int N;
while(cin>>N)
{
vector<int> vertex[N];
vector<int> store[N];
int visit[N];
fill(visit,visit+N,-1);
for(int i=0;i<N;i++)
{
int server,connectNum,connect;
char c;
cin>>server>>c>>connectNum>>c;
for(int j=0;j<connectNum;j++)
{
cin>>connect;
vertex[server].push_back(connect);
}
}
for(int i=0;i<N;i++)
{
if(visit[i]==-1)
{
DFS(vertex,i,-1,visit,store);
}
}
int count=0;
for(int i=0;i<N;i++)
{
count+=store[i].size();
}
cout<<count<<" critical links"<<endl;
for(int i=0;i<N;i++)
{
sort(store[i].begin(),store[i].end());
for(int j=0;j<store[i].size();j++)
{
cout<<i<<" - "<<store[i][j]<<endl;
}
}
cout<<endl;
}
return 0;
}
訂閱:
文章 (Atom)