Pagini recente » Cod sursa (job #1514730) | Cod sursa (job #2383387) | Cod sursa (job #1108566) | Cod sursa (job #852458) | Cod sursa (job #1564898)
#include <cstdio>
#include <vector>
#include <deque>
#include <bitset>
using namespace std;
FILE * iFile;
FILE * oFile;
int nodes, edges, start;
bitset<100002> visited;
vector <int> vertices[100002];
vector <int> answer;
deque <int> que;
void read()
{
int i, source, destination;
fscanf(iFile, "%d %d", &nodes, &edges);
fscanf(iFile, "%d %d", &source, &destination);
start = source;
vertices[source].push_back(destination);
for(i = 1; i < edges; i++)
{
fscanf(iFile, "%d %d", &source, &destination);
vertices[source].push_back(destination);
}
}
void bfs(int start_node)
{
int dist = 1;
que.push_back(start_node);
answer.push_back(start_node);
while(que.size() > 0)
{
start_node = que.front();
que.pop_front();
visited[start_node] = 1;
for(int i = 0; i < vertices[start_node].size(); i++)
{
if(visited[vertices[start_node][i]] == 0) {
visited[vertices[start_node][i]] = 1;
answer.push_back(vertices[start_node][i]);
que.push_back(vertices[start_node][i]);
}
}
}
}
int main()
{
iFile = fopen("sortaret.in", "r");
oFile = fopen("sortaret.out", "w");
read();
bfs(start);
for(int i=1;i<=nodes;i++)
if(visited[i] == 0)
answer.push_back(i);
for(int i=0;i < answer.size(); i++)
fprintf(oFile, "%d ", answer[i]);
return 0;
}